[RESOLVIDO]Dimensão de TiFF

Como eu posso verificar o tamanho de uma imagem tiff, sem necessariamente cria-la, pq no metodo que le a imagem, so é convertido o File para um byte[] e no proximo metodo é passado os bytes mais as dimensoes da imagem width e height…so não estou conseguindo recuperar as dimensoes…

eu crio os bytes assim

[code] File file = new File(path + “.tif”);

byte [][] images = new byte[1][];
 
FileInputStream fis = new FileInputStream(file);
FileChannel fc = fis.getChannel();
long len = fc.size();
if (len > Integer.MAX_VALUE)
     throw new Exception("The file is too big");
byte[] dataFile = new byte[(int)len];
ByteBuffer bb = ByteBuffer.wrap(dataFile);
fc.read(bb);

images[0] = dataFile;

[/code]

É um pouco difícil determinar as dimensões de uma figura em formato TIFF - para ter uma idéia, esse formato suporta N imagens (com tamanhos diferentes ou não) no mesmo arquivo. Provavelmente você terá de selecionar a primeira imagem, e então determinar as dimensões, que é o que provavelmente você precisa.

Veja se no pacote javax.image.* ou então no JAI não existem as rotinas para ler arquivos TIFF - não faça tudo no braço; se quiser fazer isso, leia a documentação do formato TIFF, publicada pela Adobe e pela Microsoft.

oq preciso é realmente isso, mas o tamanho total…pq eu consigo pegar o tamanho da imagem utilizando o JAI no codigo

ByteArraySeekableStream bytearrayseekablestream = new ByteArraySeekableStream(dataFile); RenderedOp renderedop = JAI.create("stream", bytearrayseekablestream); width = renderedop.getWidth(); height = renderedop.getHeight();

sendo dataFile os bytes da imagem.

mas é lançado um erro somente no jar da aplicação…pq rodando na IDE funciona perfeitamente.

Exception in thread “AWT-EventQueue-0” java.lang.ExceptionInInitializerError
at com.gempi.model.mapdata.ShapefileManipulate.preparaImageTheme(Shapefi
leManipulate.java:427)

e no final da pilha aparece essa mensagem
Caused by: java.lang.RuntimeException: Registry initialization file not found.
at javax.media.jai.OperationRegistry.initializeRegistry(OperationRegistr
y.java:363)
at javax.media.jai.JAI.(JAI.java:382)

O JAI é meio encrencado mesmo para fazer rodar. É que ele, idealmente, deve ser instalado junto com aqueles arquivos que estão em jre/lib/ext. Se ele não estiver lá (você o pôs no lib de sua aplicação J2EE, por exemplo), pode dar esses problemas de inicialização.

somente as duas libs thingol? jai_core e jai_codec?

bem, era isso mesmo thingol, coloquei as duas libs na pasta que vc mencionou e funcionou perfeitamente! brigadao