Pessoal, tenho o código abaixo que aumenta ou diminui o contraste de uma imagem.
Ele funciona com várias imagens que eu testei, mas exclusivamente com o tipo de imagem que estou usando que são cheques scaneados com extensão .tiff não funciona.
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.IOException;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public class SimpleContrast {
public static void main(String[] args) throws IOException {
// PlanarImage image = JAI.create("fileload", "C:\\foto.TIFF");//Com essa imagem funciona
PlanarImage image = JAI.create("fileload", "C:\\scan.tiff");//Com a imagem scaneada não funciona
BufferedImage input = image.getAsBufferedImage();
BufferedImage output = new BufferedImage(input.getWidth(),
input.getHeight(), BufferedImage.TYPE_INT_RGB);
float scaleFactor = 1.0f;
float offset = 1;
RescaleOp rescale = new RescaleOp(scaleFactor, offset, null);
rescale.filter(input, output);
JFrame frame = new JFrame();
frame.setTitle("Simple Contrast 2");
frame.getContentPane().add(new JButton(new ImageIcon(output)));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
O erro que dá é:
Exception in thread “main” java.lang.IllegalArgumentException: Rescaling cannot be performed on an indexed image
at java.awt.image.RescaleOp.filter(Unknown Source)
at SimpleContrast.main(SimpleContrast.java:25)
Alguém imagina o pq desse erro?
Fiz o teste de converter a imagem para JPEG e daí funcionou… :?:
Coloquei outros tipos de imagem da mesma extensão e tbm funcionou…




- o pior caso é quando o cheque é escaneado em P&B, aí não dá para fazer mágica mesmo. O contraste não pode ser mexido nesse tipo de imagens.

