La manipulación de imágenes en Java se puede lograr utilizando los contextos Graphics
o Graphics2D
.
Cargando imágenes como JPEG y PNG se puede realizar utilizando la clase ImageIO
. El método ImageIO.read
tiene un File
para leer y devuelve un BufferedImage
, que se puede utilizar para manipular la imagen a través de su contexto Graphics2D
(o el Graphics
, su superclase).
El contexto Graphics2D
se puede utilizar para realizar muchas tareas de dibujo y manipulación de imágenes. Para obtener información y ejemplos, el Trail: 2D Graphics de The Java Tutorials sería un muy buen comienzo.
es un ejemplo simplificado (no probado) que abrirá un archivo JPEG, y dibujar algunos círculos y líneas (las excepciones son ignorados) siguiente:
// Open a JPEG file, load into a BufferedImage.
BufferedImage img = ImageIO.read(new File("image.jpg"));
// Obtain the Graphics2D context associated with the BufferedImage.
Graphics2D g = img.createGraphics();
// Draw on the BufferedImage via the graphics context.
int x = 10;
int y = 10;
int width = 10;
int height = 10;
g.drawOval(x, y, width, height);
g.drawLine(0, 0, 50, 50);
// Clean up -- dispose the graphics context that was created.
g.dispose();
El código anterior se abrirá una imagen JPEG, y dibujar una oval y una línea.Una vez que se realizan estas operaciones para manipular la imagen, el BufferedImage
se puede manejar como cualquier otro Image
, ya que es una subclase de Image
.
Por ejemplo, mediante la creación de un ImageIcon
usando el BufferedImage
, se puede incrustar la imagen en un JButton
o JLabel
:
JLabel l = new JLabel("Label with image", new ImageIcon(img));
JButton b = new JButton("Button with image", new ImageIcon(img));
El JLabel
y JButton
tanto tienen constructores que toman en un ImageIcon
, de modo que puede haber una manera fácil de agregar una imagen a un componente Swing.