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)

Romanzes 14.08.2008 09:53

Ответ: Хранение картинок в классах
 
Вот, нашел: 2007_Real_Football

Phantom 14.08.2008 10:35

Ответ: Хранение картинок в классах
 
http://forum.juga.ru/showthread.php?threadid=15945

ViNT 14.08.2008 15:01

Ответ: Хранение картинок в классах
 
Чтение из ресурса делается примерно так:
PHP код:

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

public class 
ResRead {
  public 
ResRead() {
  }
  
  public 
byte[] getResBytes(String res){
    
InputStream in MyMIDlet.instance.getClass().getResourceAsStream(res);
    
byte[] null;
    try {
      
in.read(b);
      
in.close();
    }
    catch (
Exception ex) {}
    
    return 
b;
  }


Функция getResBytes возвращает массив байт ресурса res.
Здесь - MyMIDlet - главный класс мидлета,
instance - экземпляр главного класса.

P.S. на счет bsprite - явно нестандартный формат. Единственно возможный вариант - попытаться расковырять java - код, но это будет сложно, т.к. мидлет обработан обфускатором.

Romanzes 15.08.2008 00:02

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

ViNT 15.08.2008 01:18

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

Сообщение от Romanzes (Сообщение 84485)
Вот в этой игрушке, по-моему, картинки лежат в классах.

Картинки там, похоже, лежат именно в файлах .basprite, ну и пара png-шек есть.

Phantom 15.08.2008 06:16

Ответ: Хранение картинок в классах
 
ViNT, всё компилится, но мидлет повисает при запуске с белым экраном. Картинка не рисуется...
- - -
Убрал эту строку:
G.drawImage(Image.createImage(img,0,img.length),10 ,10,G.LEFT|G.TOP);
мидлет выполняется, не повисает. Что у меня в ней не так? img - это массив байт, который возвращается твоей функцией.
- - -
Эх... Написал так:
PHP код:

if(img!=null){
    
G.drawImage(Image.createImage(img,0,img.length),10,10,G.LEFT|G.TOP);
   } 

Мидлет выполняется, но картинку не рисует. Значит срабатывает исключение в твоей функции. Видимо, это:
in.read(img);
по какой-то причине не работает... В качестве ресурса пытаюсь открыть иконку "/icon.png", которая лежит в jar'е... В чём проблема - ума не приложу...
- - -
СДЕЛАЛ!!! Yahoo!!!
После строки
byte[] b = null;
добавил
b = new byte[284];
284 - это вес иконки =)
Только вот вопрос... А если я наперёд не знаю, сколько весит файл, то как тогда делать?
- - -
Как сделать байтовый массив с заполнением?
PHP код:

byte end[] = {0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82}; 

не катит... Как я понял, пишет, что я пытаюсь в байтовый массив занести числовые значения. гг. А как тогда байты представлять?

ViNT 15.08.2008 14:29

Ответ: Хранение картинок в классах
 
Да забыл инициализировать byte[] b.
А делается это так:
PHP код:

public static byte[] getResBytes(String res){

    
InputStream in=Main.instance.getClass().getResourceAsStream(res);
    
byte[] b=null;
    try{ 
         
=new byte[in.available()];//Инициализация - забыл
        
}catch(Exception e){}
    try {

      
in.read(b);
      
in.close();
    }
    catch (
Exception ex) {/*Main.quitApp();*/}

    return 
b;
  } 

На счет массива - синтаксически вроде все правильно, но матерится на значения 0xae и 0x82. Попробуй вместо них написать (byte)0xae и (byte)0x82. У меня так скомпилилось.

Phantom 16.08.2008 13:51

Ответ: Хранение картинок в классах
 
Уф... Так. Всем спасибо =) Чуть позже, как доделаю, покажу, что получилось. Я тут больше суток тупо сидел и не мог найти ошибку в нескольких строках кода. Всё компилируется, но работает не так, как надо. В итоге, только что понял в чём была ошибка. Я решил хранить ресурсы (картинки) в файле с расширением .class, типа для большего запутывания потенциального взломщика моей мега программы =) Но картинка из всего этого не собиралась! Чуть монитор в окно не выбросил от разочарования в себе... Потом... Только что то есть... Поменял расширение с class на png И ВСЁ ЗАРАБОТАЛО!
Такой вопрос: а в джаве что, имеет какое-то значение расширение файла??? Как я понял, его просто не считывало в байтовый массив! ПОЧЕМУ? Блин, я сутки искал ошибку там, где её не было... Сейчас ещё поиграюсь с расширениями, png не хочу оставлять.

ViNT 16.08.2008 15:03

Ответ: Хранение картинок в классах
 
Расширение значения не имеет, но может именно на использование .class JVM не дает разрешения.

Alex__Noc 21.06.2012 18:47

Ответ: Хранение картинок в классах
 
Phantom , Интересует нарытое))?? ХДЕЕЕЕ?????

Phantom 22.06.2012 01:40

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

Phantom , Интересует нарытое))?? ХДЕЕЕЕ?????
Идея была херня, забил давно на неё.

Тред вообще можно снести, чтобы мне не приходилось краснеть. :-D


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

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