Jpeg error

1 resposta
biozit

Boa tarde,

Estou utilizando JPEGImageDecoder para descobrir se um JPEG é corrompido ou não....
porem em alguns casos ele so imprimi no console que há um erro e não gera nenhuma exceção..

como posso fazer para ler isso que ele imprime no console. ??
[code]
public void comp(String imagem){

FileInputStream in = null;

try {

in = new FileInputStream(imagem);

JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
BufferedImage bi = decoder.decodeAsBufferedImage();

JPEGDecodeParam deParam = decoder.getJPEGDecodeParam();
boolean b = deParam.isImageInfoValid();
boolean z = deParam.isTableInfoValid();

in.close();

}catch (TruncatedFileException e) {
try{
if(in != null){
in.close();
}
}catch (IOException err) {
err.printStackTrace();
}
e.printStackTrace();
File f = new File(imagem);
File destino = new File("C:\\");
f.renameTo(destino);
f.delete();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ImageFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
[/quote]

1 Resposta

biozit

isso resolve

package teste.jpeg;

import java.io.File;
import java.io.FileInputStream;

import javax.imageio.IIOException;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.event.IIOReadWarningListener;
import javax.imageio.stream.ImageInputStream;
import javax.swing.ImageIcon;

public class JpegTeste{

	public void comp(String imagem){	
		FileInputStream in = null;
		try {
			in = new FileInputStream(imagem);
			
			ImageReader ir = (ImageReader) ImageIO.getImageReadersBySuffix("jpeg").next();
			
			ir.addIIOReadWarningListener(new IIOReadWarningListener(){

				@Override
				public void warningOccurred(ImageReader source, String warning) {
					System.out.println(warning);
					
				}
				
			});
			
			ImageInputStream iis = ImageIO.createImageInputStream(in);
			ir.setInput(iis);
			ImageIcon icon = new ImageIcon();
			icon.setImage(ir.read(0));
			in.close();
		}catch (IIOException e) {
			e.printStackTrace();
			File f = new File(imagem);
			File destino = new File("C:\\asdfjpg");
			f.renameTo(destino);
			f.delete();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		try {
			String imagem = "C:\\asdf.jpg";

			JpegTeste jp = new JpegTeste();
			jp.comp(imagem);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
Criado 27 de dezembro de 2007
Ultima resposta 27 de dez. de 2007
Respostas 1
Participantes 1