Manipular imagens

5 respostas
Alan_Delgado

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.

5 Respostas

Marky.Vasconcelos

http://incubadora.fapesp.br/sites/marvin

danilomunoz

Muito obrigado Mark_Ameba pela indicação!

Alan_Delgado

Valew Mark_Ameba vc arrasou!!!

Tirei varias ideias de lá, mas por acaso vcs conhecem alguma class do javadoc, se souberem me avisem,

obrigado

Marky.Vasconcelos

Do próprio Java existe a API JAI (Java Advanced Imaging).

É uma API separada que você pode baixar para varios sistemas operacionais com aceleração nativa ou uma versão cross sem aceleração.

Alan_Delgado

Valeu cara era isso que precisava!!!

Criado 15 de abril de 2008
Ultima resposta 17 de abr. de 2008
Respostas 5
Participantes 3