Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition

JAVA Micro Edition Низкоуровневое программирование мобильных телефонов.

Ответ
 
Опции темы
Старый 12.08.2008, 03:02   #1
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,141
Написано 704 полезных сообщений
(для 1,740 пользователей)
Хранение картинок в классах

Целую ночь лажу в интернете, но так и не нашёл ответ на вопрос: как хранить картинки (и вообще разные ресурсы) внутри классов? Первое и последнее, что пришло на ум - хранить картинку в виде hex строки и из неё создавать имэдж. Но я не знаю как это сделать ... Также терзает мысль, что можно даже не строку хранить, а просто каким-то образом в креатИмэдж засунуть 0xHEXBYTESPICTURES... В общем, помогите...
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 09:14   #2
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Хранение картинок в классах

Записать данные напрямую похоже не получится - пробовал по-разному записывать данные в класс - мидлет не запускается, видимо, класс получается некорректным. С exe-шниками, помню, такое делал, а с .class не получается.
Если только переводить ресурс в HEX, но тогда он будет занимать в 2 раза больше места и декодироваться будет долго.

Последний раз редактировалось ViNT, 12.08.2008 в 09:26.
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 18:41   #3
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Хранение картинок в классах

как вариант хранить в int массиве, только он должен быть
final static int чтобы компилятор его за константу принял. Одно число это 4 байта.
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 21:21   #4
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Хранение картинок в классах

Все равно надо писать программу, формирующую этот самый массив, хотя это уже ерунда. Кстати, интересно, дельфовский TColor это то же самое, что и числа в массиве RGB в java, или там байты переставлены?
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 21:24   #5
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,141
Написано 704 полезных сообщений
(для 1,740 пользователей)
Ответ: Хранение картинок в классах

Если только переводить ресурс в HEX, но тогда он будет занимать в 2 раза больше места и декодироваться будет долго.
Места-то пускай больше занимает, после запаковки в zip текстовые hex данные должны хорошо сжаться.
как вариант хранить в int массиве, только он должен быть
final static int чтобы компилятор его за константу принял. Одно число это 4 байта.
Почти ничего не понял =(
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 21:25   #6
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,141
Написано 704 полезных сообщений
(для 1,740 пользователей)
Ответ: Хранение картинок в классах

Массив RGB в текстовом виде кода джавы из картинки я могу на PHP сделать =)
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 21:27   #7
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Хранение картинок в классах

Сообщение от Phantom_wc Посмотреть сообщение
Массив RGB в текстовом виде кода джавы из картинки я могу на PHP сделать =)
Да проще на Delphi написать.
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 21:37   #8
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,141
Написано 704 полезных сообщений
(для 1,740 пользователей)
Ответ: Хранение картинок в классах

А я Делфи не знаю и компилятора нет у меня...
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 21:51   #9
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,141
Написано 704 полезных сообщений
(для 1,740 пользователей)
Ответ: Хранение картинок в классах

Только вот как в массив вносить? Каждый пиксель отдельно? Типа так:
int pixel[]=null;
pixel=new int[100];
pixel[0]=0xaabbccdd;
pixel[1]=0xaadd0000;
pixel[2]=0xaaddaa00;
 . . .
pixel[97]=0xaacccccc;
pixel[98]=0xaa00ff00;
pixel[99]=0xaafbfbfb
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 22:11   #10
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Хранение картинок в классах

final static int arr[] = {0x00001, 0x00003};
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 22:55   #11
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,141
Написано 704 полезных сообщений
(для 1,740 пользователей)
Ответ: Хранение картинок в классах

Ааа... А чем final отличается от public? А то я везде public пишу... Уфф... Джава такая сложная, по мне так в ней много лишнего и мало нужного...
- - -
Пардон, немного не так вопрос задал. Ща исходники смотрел, можно использовать и паблин и финал одновременно... Но что такое финал я так и не понял.

Последний раз редактировалось Phantom, 12.08.2008 в 23:12.
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 23:19   #12
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Хранение картинок в классах

Вот программка, переносишь на неё bmp-файл, и получашь в той же папке файл "<имя_файла_изображения>.java" вида
public static final int[] rgb_data={0,0,0.............};
 public static final 
int width=<ширина изображения>;
 public static final 
int height=<высота изоьражения>; 
Дальше, допустим, создешь файл Lib_resoutce.java в ктотром пишешь:
import javax.microedition.lcdui.Image;

public class 
Lib_resource{

/*СЮДА ДАННЫЕ ИЗ СОЗДАННОГО ПРОГОЙ ФАЙЛА*/

publc Lib_resource(){}

    public static 
Image return_image(){
      return 
Image.createRGBImage(rgb_data,width,height,false);
 }

Компилишь, получаешь библиотеку.
В проекте MP пишешь:
program TstClassRes;
uses resource;
begin
  drawimage
(return_image,0,0);
  
repaint;    
  
delay(20000);
end
У меня вроде работает.

P.S. Модели RGB в java и Delphi не совпали, пришлось байты переставлять.

P.P.S. final это то же самое, что и const в паскале.
Вложения
Тип файла: zip Img2Class.zip (64.6 Кб, 156 просмотров)
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 23:34   #13
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,141
Написано 704 полезных сообщений
(для 1,740 пользователей)
Ответ: Хранение картинок в классах

Стоп, стоп, стоп. Я не на мидлет паскале пишу. Точнее... Я, короче, декомпилировал FW.class и M.class (обэчный Хэллоу Ворлд), немного их изменил и на основе их пишу на Джаве, вообще без паскаля =) А за программку спасибо, как раз собирался только что скрипт писать =) Сейчас разберусь, заюзаю =)
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 23:38   #14
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,141
Написано 704 полезных сообщений
(для 1,740 пользователей)
Ответ: Хранение картинок в классах

А зачем нужно, чтобы компилятор за констатнту принимал этот массив? А если мне нужно мнооого картинок создать, то придётся несколько констант создавать? Телефон от этого не упадёт? А то бы я просто обычный массив использовал и все картинки по очереди в него перезаписывал...
- - -
А может можно как-то сразу скормить перечисление пикселов в Image.createRGBImage? Чтобы и не создавать переменной новой в программе? Примерно так:

G.drawImage(Image.createRGBImage(int[] {0xffff0000,0xffff0000,0xffff0000,0xffff0000},2,2,true),10,10,G.LEFT|G.TOP); 
Пробовал, не прокатывает. А в php бы прокатило =) Только там array(0xffff0000,0xffff0000,0xffff0000,0xffff0000) надо писать.
- - -
О_о Я кажется понял, зачем нужно константу создавать. Компилятор её заменяет на значение, а JVM потом не требуется выделять память под хранение константы. Верно?

Последний раз редактировалось Phantom, 12.08.2008 в 23:57.
(Offline)
 
Ответить с цитированием
Старый 12.08.2008, 23:49   #15
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Хранение картинок в классах

Все равно их нужно где-то хранить, в константном массиве проще всего.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранение карт в формате хмл и их чтение Aceton C++ 3 25.03.2009 16:26
Коллизия картинок Petrofan 2D-программирование 4 28.10.2008 19:21
типы и хранение данных Akima 2D-программирование 16 09.02.2006 21:45
Лента из картинок impersonalis FAQ 2 04.10.2005 18:21


Часовой пояс GMT +1, время: 17:47.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com