forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JAVA Micro Edition (http://forum.boolean.name/forumdisplay.php?f=52)
-   -   Хранение картинок в классах (http://forum.boolean.name/showthread.php?t=6239)

Phantom 12.08.2008 07:02

Хранение картинок в классах
 
Целую ночь лажу в интернете, но так и не нашёл ответ на вопрос: как хранить картинки (и вообще разные ресурсы) внутри классов? Первое и последнее, что пришло на ум - хранить картинку в виде hex строки и из неё создавать имэдж. Но я не знаю как это сделать :dontknow: ... Также терзает мысль, что можно даже не строку хранить, а просто каким-то образом в креатИмэдж засунуть 0xHEXBYTESPICTURES... В общем, помогите...

ViNT 12.08.2008 13:14

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

Piligrim 12.08.2008 22:41

Ответ: Хранение картинок в классах
 
как вариант хранить в int массиве, только он должен быть
final static int чтобы компилятор его за константу принял. Одно число это 4 байта.

ViNT 13.08.2008 01:21

Ответ: Хранение картинок в классах
 
Все равно надо писать программу, формирующую этот самый массив, хотя это уже ерунда. Кстати, интересно, дельфовский TColor это то же самое, что и числа в массиве RGB в java, или там байты переставлены?

Phantom 13.08.2008 01:24

Ответ: Хранение картинок в классах
 
Цитата:

Если только переводить ресурс в HEX, но тогда он будет занимать в 2 раза больше места и декодироваться будет долго.
Места-то пускай больше занимает, после запаковки в zip текстовые hex данные должны хорошо сжаться.
как вариант хранить в int массиве, только он должен быть
Цитата:

final static int чтобы компилятор его за константу принял. Одно число это 4 байта.
Почти ничего не понял =(

Phantom 13.08.2008 01:25

Ответ: Хранение картинок в классах
 
Массив RGB в текстовом виде кода джавы из картинки я могу на PHP сделать =)

ViNT 13.08.2008 01:27

Ответ: Хранение картинок в классах
 
Цитата:

Сообщение от Phantom_wc (Сообщение 84344)
Массив RGB в текстовом виде кода джавы из картинки я могу на PHP сделать =)

Да проще на Delphi написать.

Phantom 13.08.2008 01:37

Ответ: Хранение картинок в классах
 
А я Делфи не знаю и компилятора нет у меня...

Phantom 13.08.2008 01:51

Ответ: Хранение картинок в классах
 
Только вот как в массив вносить? Каждый пиксель отдельно? Типа так:
PHP код:

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


Piligrim 13.08.2008 02:11

Ответ: Хранение картинок в классах
 
final static int arr[] = {0x00001, 0x00003};

Phantom 13.08.2008 02:55

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

ViNT 13.08.2008 03:19

Ответ: Хранение картинок в классах
 
Вложений: 1
Вот программка, переносишь на неё bmp-файл, и получашь в той же папке файл "<имя_файла_изображения>.java" вида
PHP код:

public static final int[] rgb_data={0,0,0.............};
 public static final 
int width=<ширина изображения>;
 public static final 
int height=<высота изоьражения>; 

Дальше, допустим, создешь файл Lib_resoutce.java в ктотром пишешь:
PHP код:

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 пишешь:
PHP код:

program TstClassRes;
uses resource;
begin
  drawimage
(return_image,0,0);
  
repaint;    
  
delay(20000);
end

У меня вроде работает.

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

P.P.S. final это то же самое, что и const в паскале.

Phantom 13.08.2008 03:34

Ответ: Хранение картинок в классах
 
Стоп, стоп, стоп. Я не на мидлет паскале пишу. Точнее... Я, короче, декомпилировал FW.class и M.class (обэчный Хэллоу Ворлд), немного их изменил и на основе их пишу на Джаве, вообще без паскаля =) А за программку спасибо, как раз собирался только что скрипт писать =) Сейчас разберусь, заюзаю =)

Phantom 13.08.2008 03:38

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

PHP код:

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 потом не требуется выделять память под хранение константы. Верно?

ViNT 13.08.2008 03:49

Ответ: Хранение картинок в классах
 
Все равно их нужно где-то хранить, в константном массиве проще всего.


Часовой пояс GMT +4, время: 03:16.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot