|
JAVA Micro Edition Низкоуровневое программирование мобильных телефонов. |
12.08.2008, 07:02
|
#1
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Хранение картинок в классах
Целую ночь лажу в интернете, но так и не нашёл ответ на вопрос: как хранить картинки (и вообще разные ресурсы) внутри классов? Первое и последнее, что пришло на ум - хранить картинку в виде hex строки и из неё создавать имэдж. Но я не знаю как это сделать ... Также терзает мысль, что можно даже не строку хранить, а просто каким-то образом в креатИмэдж засунуть 0xHEXBYTESPICTURES... В общем, помогите...
|
(Offline)
|
|
12.08.2008, 13:14
|
#2
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Хранение картинок в классах
Записать данные напрямую похоже не получится - пробовал по-разному записывать данные в класс - мидлет не запускается, видимо, класс получается некорректным. С exe-шниками, помню, такое делал, а с .class не получается.
Если только переводить ресурс в HEX, но тогда он будет занимать в 2 раза больше места и декодироваться будет долго.
Последний раз редактировалось ViNT, 12.08.2008 в 13:26.
|
(Offline)
|
|
12.08.2008, 22:41
|
#3
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Хранение картинок в классах
как вариант хранить в int массиве, только он должен быть
final static int чтобы компилятор его за константу принял. Одно число это 4 байта.
|
(Offline)
|
|
13.08.2008, 01:21
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Хранение картинок в классах
Все равно надо писать программу, формирующую этот самый массив, хотя это уже ерунда. Кстати, интересно, дельфовский TColor это то же самое, что и числа в массиве RGB в java, или там байты переставлены?
|
(Offline)
|
|
13.08.2008, 01:24
|
#5
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Хранение картинок в классах
Если только переводить ресурс в HEX, но тогда он будет занимать в 2 раза больше места и декодироваться будет долго.
|
Места-то пускай больше занимает, после запаковки в zip текстовые hex данные должны хорошо сжаться.
как вариант хранить в int массиве, только он должен быть
final static int чтобы компилятор его за константу принял. Одно число это 4 байта.
|
Почти ничего не понял =(
|
(Offline)
|
|
13.08.2008, 01:25
|
#6
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Хранение картинок в классах
Массив RGB в текстовом виде кода джавы из картинки я могу на PHP сделать =)
|
(Offline)
|
|
13.08.2008, 01:27
|
#7
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Хранение картинок в классах
Сообщение от Phantom_wc
Массив RGB в текстовом виде кода джавы из картинки я могу на PHP сделать =)
|
Да проще на Delphi написать.
|
(Offline)
|
|
13.08.2008, 01:37
|
#8
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Хранение картинок в классах
А я Делфи не знаю и компилятора нет у меня...
|
(Offline)
|
|
13.08.2008, 01:51
|
#9
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Хранение картинок в классах
Только вот как в массив вносить? Каждый пиксель отдельно? Типа так:
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)
|
|
13.08.2008, 02:11
|
#10
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Хранение картинок в классах
final static int arr[] = {0x00001, 0x00003};
|
(Offline)
|
|
13.08.2008, 02:55
|
#11
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Хранение картинок в классах
Ааа... А чем final отличается от public? А то я везде public пишу... Уфф... Джава такая сложная, по мне так в ней много лишнего и мало нужного...
- - -
Пардон, немного не так вопрос задал. Ща исходники смотрел, можно использовать и паблин и финал одновременно... Но что такое финал я так и не понял.
Последний раз редактировалось Phantom, 13.08.2008 в 03:12.
|
(Offline)
|
|
13.08.2008, 03:19
|
#12
|
Модератор
Регистрация: 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 в паскале.
|
(Offline)
|
|
13.08.2008, 03:34
|
#13
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Хранение картинок в классах
Стоп, стоп, стоп. Я не на мидлет паскале пишу. Точнее... Я, короче, декомпилировал FW.class и M.class (обэчный Хэллоу Ворлд), немного их изменил и на основе их пишу на Джаве, вообще без паскаля =) А за программку спасибо, как раз собирался только что скрипт писать =) Сейчас разберусь, заюзаю =)
|
(Offline)
|
|
13.08.2008, 03:38
|
#14
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Хранение картинок в классах
А зачем нужно, чтобы компилятор за констатнту принимал этот массив? А если мне нужно мнооого картинок создать, то придётся несколько констант создавать? Телефон от этого не упадёт? А то бы я просто обычный массив использовал и все картинки по очереди в него перезаписывал...
- - -
А может можно как-то сразу скормить перечисление пикселов в 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, 13.08.2008 в 03:57.
|
(Offline)
|
|
13.08.2008, 03:49
|
#15
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Хранение картинок в классах
Все равно их нужно где-то хранить, в константном массиве проще всего.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:56.
|