[RESOLVIDO]Dimensão de TiFF

5 respostas
H

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

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;

5 Respostas

T

É 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.

H

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)
T

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.

H

somente as duas libs thingol? jai_core e jai_codec?

H

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

Criado 7 de março de 2007
Ultima resposta 7 de mar. de 2007
Respostas 5
Participantes 2