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 13.08.2008 04:13

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

b.java:38: code too large
 public static void R() throws Exception{
                    ^
1 error

Это что? Типа код слишком длинный? Что делать? Это я картинку 160x138 заюзал... А если не bmp и с прозрачностью надо, то твоя прога не сможет сделать?
- - -
Сделал картинку в четыре раза меньше, всё создало, откомпилировало, но мидлет не запускается. Эмулятор сразу при попытке запуска закрывается. Видимо, мы к решению этого вопроса неправильно подошли... Каким-то образом ведь делают так. Пойду декомпильну что-нибудь, может поможет =)

Phantom 13.08.2008 09:01

Ответ: Хранение картинок в классах
 
У меня появилась другая идея =) Как можно считать картинку из файла и преобразовать в объект Image?

ViNT 13.08.2008 13:09

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

Сообщение от Phantom_wc (Сообщение 84370)
У меня появилась другая идея =) Как можно считать картинку из файла и преобразовать в объект Image?

Я в своей библиотеке делал так:
PHP код:

import java.io.*;
import javax.microedition.lcdui.Image;
import javax.microedition.io.*;

class 
Lib_imloadjsr75 {
public static 
Image img;

public static 
Image loadimage(String filename) {
  try {
    
FileConnection con = (FileConnection)
        
Connector.open("file://" +
                       
filenameConnector.READ);
    
InputStream IS con.openInputStream();
    
img Image.createImage(IS);
    
IS.close();
    
con.close();
  }
  catch (
Exception ex) {}

  return 
img;


}


А вообще, зачем хранить изображения в классах?
Кстати, есть еще вариант: закодировать бинарник PNG чем-нибудь в роде base64 и записать как строковую константу. Места будет занимать мало, только декодировать обратно придется.

Phantom 13.08.2008 14:11

Ответ: Хранение картинок в классах
 
Изображения хочу хранить в классе, чтобы достать их оттуда было непросто =) Ща думаю просто записать в один файл все картинки по очереди без префиксов, а после считать файл из класса, отделить все картинки одну от другой, приделать к каждой префикс, который убрал до записи в файл и создать объект Image.
Твой способ, вроде, не пройдёт... Я половину функций из твоего примера не знаю, но, как я понял, у тебя из потока как бы объект создаётся. К нему, наверно, не получится добавить префикс... Префикс - это, грубо говоря, набор байт или строка. Вот. Что посоветуешь?

ViNT 13.08.2008 14:44

Ответ: Хранение картинок в классах
 
Тогда так:
PHP код:

FileConnection con = (FileConnection
        
Connector.open("file://" 
                       
filenameConnector.READ); 
    
InputStream IS con.openInputStream();
    
    
byte[] im=null;
    
IS.read(im);//читаем данные в массив байт
    //здесь делаем с массивом байт что угодно
    
img=Image.createImage(im,0,im.length);//создаем Image из массива im 

Вот. читаем данные в массив, а дальше изменяем его, как надо.
Потом создаем из него Image.

А если уж очень надо спрятать, тогда лучше шифровать чем-нибудь.

Phantom 13.08.2008 15:06

Ответ: Хранение картинок в классах
 
Ну base64 открытый алгоритм, кто угодно на вид сразу догадается попробовать обратить. Да и от шифрования скорость упадёт. Спрятать нужно не особо. Защиты от дурака хватит =) Попробую с массивом байт.

ViNT 13.08.2008 15:24

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

Сообщение от Phantom_wc (Сообщение 84396)
Спрятать нужно не особо. Защиты от дурака хватит =)

Ну так тогда PNG задом наперед перевернуть, так многие делают. Мне самому когда такое попалось, я не сразу додумался его HEX-редактором просмотреть. И только когда просмотрел - увидел, что файл задом наперед переписан.

Phantom 13.08.2008 15:24

Ответ: Хранение картинок в классах
 
b.java:49: cannot find symbol
symbol : class FileConnection
location: class b
FileConnection con=(FileConnection)
^
b.java:49: cannot find symbol
symbol : class FileConnection
location: class b
FileConnection con=(FileConnection)
^
2 errors
- - -
Хы, тут тема где-то про картинки в файлах есть, моё сообщение последнее. Я подошёл к расшифровке картинок с полной ответственностью =)
О_о

ViNT 13.08.2008 15:33

Ответ: Хранение картинок в классах
 
Этому коду нужен класс javax.microedition.io.file.FileConnection

Phantom 13.08.2008 15:42

Ответ: Хранение картинок в классах
 
import javax.microedition.io.*; я написал. Не работает. Не может же быть, что... Что у меня его в компиляторе НЕТ О_о ???

ViNT 13.08.2008 17:41

Ответ: Хранение картинок в классах
 
Скорее всего, нет пакета JSR75 API.
Хотя стоп. Имеется в виду чтение из внешнего файла или из ресурса?

Piligrim 13.08.2008 18:53

Ответ: Хранение картинок в классах
 
еще один из способов, замена заголовка %PNG на другие символы или просто удаление, тогда практически все просмотрщики пасуют.

Romanzes 13.08.2008 19:12

Ответ: Хранение картинок в классах
 
Немного не по теме, кто знает, чем редактировать изображения в формате *.bsprite? Не помню, в какой игрушке я это видел, если вспомню, выложу линк.

ViNT 14.08.2008 01:14

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

Сообщение от Romanzes (Сообщение 84424)
Немного не по теме, кто знает, чем редактировать изображения в формате *.bsprite? Не помню, в какой игрушке я это видел, если вспомню, выложу линк.

Похоже какой-то нестандартный формат.
Скорее всего, либо RAW-данные наподобие BMP, либо сжатые данные, наподобие ZIP. Увидеть бы сам файл.

Phantom 14.08.2008 09:11

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

Хотя стоп. Имеется в виду чтение из внешнего файла или из ресурса?
Из ресурса, конечно =) Зачем мне зашифрованные картинки с диска читать? гг
Цитата:

еще один из способов, замена заголовка %PNG на другие символы или просто удаление, тогда практически все просмотрщики пасуют.
Я хочу убрать больше даже, там префикс у png длиннее, который одинаковый у всех png'шек. А ещё с конца можно несколько байт удалить (по ним тоже можно догадаться, что это png).
- - -
Зацените, какое я тут расследование провёл:
http://forum.boolean.name/showthread...newpost&t=2086
А то обидно, я часа полтора ковырялся, а никто даже не отписался =(


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

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