Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

viernes, 4 de abril de 2014

Imágenes. Guardar una imagen previamente modificada.

Creamos un nuevo proyecto y en vista de diseño se agrega un jButton y un jPanel.


Codigo1 (Principal.java):

package Recortar;

public class Principal extends javax.swing.JFrame {

    public Principal() {
        initComponents();
        this.setLocationRelativeTo(null);
    }

          
    private void initComponents() { ... }                        

    private void jButtonIniciarActionPerformed(java.awt.event.ActionEvent evt) { 
        Imagen im = new Imagen(jPanel1);
        jPanel1.add(im).repaint();
    }                                              

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Principal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButtonIniciar;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
}


Codigo 2 (Imagen.java):

package Guardar;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Stroke;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class Imagen extends javax.swing.JPanel {

    int x, y;

    public Imagen(JPanel jPanel1) {
        this.x = jPanel1.getWidth();
        this.y = jPanel1.getHeight();
        this.setSize(x, y);
    }

    @Override
    public void paint(Graphics g) {

        try {

            // Se carga la imagen original
            BufferedImage imagen;
            File f = new File("src/Images/imagen1.png");
            imagen = ImageIO.read(f);
            Graphics2D g2 = (Graphics2D) imagen.getGraphics();

            // Se modifica la imagen original
            Stroke stroke = new BasicStroke((float) 20); // Grosor pincel
            g2.setStroke(stroke);
            g2.setColor(Color.RED);
            g2.setRenderingHint(
                    RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON); // Filtro antialiasing 
            g2.drawLine(0, 0, imagen.getWidth(), imagen.getHeight()); // Línea diagonal

            // Se guarda la imagen y se imprime en el jPanel
            ImageIO.write(imagen, "png", new File("imagen2.png"));
            g.drawImage(imagen, 0, 0, this);

        } catch (IOException ex) {  }

    }

}


Resultado:




















2 comentarios:

  1. Amigo a mi no me genero codigo adentro del metodo private void initComponents() { ... } que es lo que debe de ir adentro de ese metodo?

    ResponderEliminar
    Respuestas
    1. Si trabajas con NetBeans y en modo de diseño sería agregar con el mouse los componentes jButton, jPanel. Sólo hay que arrastrarlos a la ventana (jFrame)). NetBeans se encarga de generar el código automáticamente.

      Eliminar

Con la tecnología de Blogger.