Saudações à todos,
Eu estou precisando de uma ajuda, eu gostaria de saber se vcs conhecem alguma maneira de abrir imagens e de manipula-lás, eu concegui desta forma:
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
public class Teste{
public static void main(String [] args) throws IOException{
BufferedImage image = ImageIO.read(new File(args[0]));
String imageInfo = "Dimensions: "+ image.getWidth() +" x "+
image.getHeight() + " Bands: "+ image.getRaster().getNumBands();
//Teste - converter a imagem para Tons de Cinza
int width = image.getWidth();
int height = image.getHeight();
int tom_cinza = 0;
int [] vetor_tc = new int [3];
for(int i = 0; i < height; i++){
for(int j = 0; j < width; j++){
tom_cinza = ( image.getRaster().getSample(j,i,0) + image.getRaster().getSamp(j,i,1) + image.getRaster().getSample(j,i,2) )/3; vetor_tc[0] = tom_cinza;
vetor_tc[1] = tom_cinza;
vetor_tc[2] = tom_cinza; image.getRaster().setPixel(j,i,vetor_tc);
}
}
ImageIcon icon = new ImageIcon(image);
JLabel imageLabel = new JLabel(icon);
JFrame frame = new JFrame();
frame.setTitle("Display image: "+ args[0]);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new JScrollPane(imageLabel), BorderLayout.CENTER);
contentPane.add(new JLabel(imageInfo), BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
}
}
Mas eu queria saber se ha alguma classe para transformar imagens coloridades em tons de cinza, e para manipular os pixels, sem que eu precise ficar fazendo estruturas de repitição,jogando de array para arrays,
desde já muito obrigado.