Image.createImage problema em J2ME

votos
0

Eu tentei isso em J2ME

try {
    Image immutableThumb = Image.createImage( temp, 0, temp.length);
} catch (Exception ex) {
    System.out.println(ex);
}

Eu bati esse erro: java.lang.IllegalArgumentException:

Como posso resolver isso?

Publicado 07/11/2008 em 11:02
fonte usuário
Em outras línguas...                            


4 respostas

votos
1

Vamos dar uma olhada nos docs: IllegalArgumentException é lançado

se imageData está formatado incorretamente ou de outra forma não pode ser decodificado

Assim, a possível razão pode ser qualquer um dos formatos suportados da imagem, ou dados truncados. Lembre-se, você deve passar arquivo inteiro para esse método, incluindo todos os cabeçalhos. Se você tem dúvidas sobre o formato, você iria escolher melhor PNG , deve ser apoiada de qualquer maneira.

Respondeu 13/12/2008 em 12:40
fonte usuário

votos
1

É difícil dizer, sem mais detalhes ou código mais envolvente, mas a minha suspeita inicial é que o arquivo você está tentando carregar está em um formato não suportado pelo dispositivo.

Respondeu 07/11/2008 em 12:11
fonte usuário

votos
1

Image.createImage () lança uma IllegalArgumentException se o primeiro argumento é formatado de forma incorrecta ou de outra forma não pode ser descodificada. (Estou assumindo que é um byte Temp []).

http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/Image.html#createImage(byte[],%20int,%20int)

(Este URL recusa-se a se tornar um hiperlink por alguma razão (?))

Respondeu 07/11/2008 em 11:11
fonte usuário

votos
0

Eu só tive o mesmo problema com o meu MIDlet e que o problema no meu caso foi o cabeçalho HTTP que vem junto a imagem JPEG que eu li a partir InputStream do socket. E eu resolvi-lo, encontrando o marcador JPEG SOI que é identificado por dois bytes: FFD8na minha matriz de bytes. Então, quando eu encontrar a localização do FFD8na minha matriz de bytes, eu aparar os bytes iniciais que representam o cabeçalho HTTP, e então eu poderia chamar createImage()sem qualquer exceção sendo lançada ...

Você deve verificar se este for o caso com você. Basta verificar isso é verdade (temp[0] == 0xFF && temp[1] == 0xD8)e se não é, aparar o início do tempmodo de remover cabeçalho HTTP ou algum outro lixo ...

PS Eu presumo que você está lendo imagem JPEG, se não, procure o cabeçalho apropriado na tempmatriz.

Além disso, se isso não ajudar, e você está lendo imagem JPEG se certificar de que a matriz começa com FFD8e termina com FFD9(que é o marcador EOI). E se ele não termina com a EOI apenas aparar o final, como eu expliquei para SOI ...

PPS E se você achar que os dados tempé válido, então a sua plataforma não pode decodificar as imagens JPEG ou a imagem em tempé grande para decodificador JPEG.

Respondeu 17/03/2010 em 11:57
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more