// // // Uso de ImageIO com BufferedImage // Vantagens: ve varios tipos de imagens, // da acesso aos elementos de uma imagem e visualiza dado processado import java.io.File; // pacotes do AWT import java.awt.image.BufferedImage; import java.awt.image.Raster; import java.awt.image.WritableRaster; // pacote Swing para definir interface gráfica import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.ImageIcon; // leitura em modo imediato - para J2SE 1.4+ import javax.imageio.ImageIO; public class Idvn extends JFrame { public static void main(String args[]) { // Mostra JFrame decorado pelo Swing JFrame.setDefaultLookAndFeelDecorated(true); // Carrega e Visualiza imagens originais String ima_name_in1 = "TM_3.jpg"; String ima_name_in2 = "TM_4.jpg"; String ima_name_out = "ivdn.jpg"; BufferedImage ima_in1, ima_in2, ima_out; ima_in1 = CarregaImagem(ima_name_in1); Idvn frame1 = new Idvn(); frame1.MostraImagem(ima_in1, ima_name_in1); ima_in2 = CarregaImagem(ima_name_in2); Idvn frame2 = new Idvn(); frame2.MostraImagem(ima_in2, ima_name_in2); // Carrega e processa imagem original e mostra imagem processada ima_out = ProcessaImagem(ima_in1, ima_in2); SalvaImagem(ima_out, ima_name_out); Idvn frame3 = new Idvn(); frame3.MostraImagem(ima_out, ima_name_out); } public static BufferedImage CarregaImagem(String image_name) { // Associa objeto BufferedImage com BufferedImage ima_in = null; // Carrega imagem File file = new File(image_name); try { ima_in= ImageIO.read(file); } catch(Exception e) { System.out.println("Imagem '" + image_name + "' nao existe."); System.exit(0); } System.out.println("Nome da Imagem: "+image_name+" Tipo da Imagem: "+ima_in.getType()); System.out.println("Tamanho da Imagem: Colunas "+ima_in.getWidth()+" Linhas "+ima_in.getHeight()); return ima_in; } public static void SalvaImagem(BufferedImage dest, String image_name) { try { ImageIO.write(dest, "jpg", new File(image_name)); } catch (Exception e) { System.out.println("Problema gravando arquivo. "); System.exit(0); } } public static BufferedImage ProcessaImagem (BufferedImage ima_in1, BufferedImage ima_in2) { // Associa objeto BufferedImage com níveis de cinza (10) BufferedImage ima_out = new BufferedImage(ima_in1.getWidth(),ima_in1.getHeight(),BufferedImage.TYPE_BYTE_GRAY); // 10 - TYPE_BYTE_GRAY // Recupera matriz das imagens de entrada e saida Raster raster1 = ima_in1.getRaster(); // declara e instancia objeto raster soh para leitura Raster raster2 = ima_in2.getRaster(); // declara e instancia objeto raster soh para leitura WritableRaster wraster = ima_out.getRaster(); // declara e instancia objeto raster para escrita // Processa valores da imagem de entrada e armazena na imagem de saida int v1, v2, valorn; double soma, dif, razao; for(int y=0; y 255)valorn = 255; wraster.setSample(x,y,0,valorn); if(y<=3 && x<=3) System.out.println(y+" "+x+" Valores "+v1+" "+v2+" "+valorn); } return ima_out; }; public void MostraImagem(BufferedImage ima, String image_name) { // Define GUI com objetos do Swing JLabel lsrc2 = new JLabel(new ImageIcon(ima)); getContentPane().add(new JScrollPane(lsrc2)); JLabel lsrc3 = new JLabel("Bibinho"); // Atribui nome e tamanho ao frame setTitle("Java2DImageDisplay: " + image_name); setSize(ima.getWidth()+40, ima.getHeight()+40); setVisible(true); // Encerra a aplicação clicando no "close" setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static int Minimo(int a, int b, int c){ int min=a; if(bmax)max=b; if(c>max)max=c; return max; } }