Hi guys... It is very simple program to parse an image and add new graphical components to image. Here I used Graphics2D package to add a rectangle to highlight face... Hope you enjoy this tutorial and share it with your friends.
VIDEO TUTORIAL
SOURCE CODE
import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class MarkImage extends JFrame { JButton btn = new JButton("Open File"); JPanel imagePanel = new JPanel(); JPanel menuPanel = new JPanel(); double h, w; MarkImage()//Constructor { super("Mark Image -- Coded By Ajith Kp [ ajithkp560 ]"); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); int ret = fc.showOpenDialog(MarkImage.this); if(ret==JFileChooser.APPROVE_OPTION) { File imgf = fc.getSelectedFile(); imagePanel.removeAll(); try { setPic(imgf); } catch (IOException ex) { } } } }); menuPanel.add(btn); add(menuPanel, BorderLayout.NORTH); add(imagePanel, BorderLayout.CENTER); } public void setPic(File imgf) throws IOException { BufferedImage myImg = ImageIO.read(imgf); double x = myImg.getWidth(); double y = myImg.getHeight(); h = imagePanel.getHeight(); w= imagePanel.getWidth(); if(x>w || y>h) { double ox = w/x, oy = h/y; System.out.println(ox+" "+oy); if(ox<oy) { x = x*ox; y = y*ox; } else { x = x*oy; y = y*oy; } } Graphics2D g2 = myImg.createGraphics(); g2.setColor(Color.red); g2.setStroke(new BasicStroke(20)); g2.drawRect(650, 220, 600, 600); Image newimg = myImg.getScaledInstance((int)x, (int)y, Image.SCALE_SMOOTH); JLabel picLabel = new JLabel(new ImageIcon(newimg)); imagePanel.add(picLabel); imagePanel.revalidate(); imagePanel.repaint(); } public static void main(String[] args) { MarkImage dn = new MarkImage(); dn.setVisible(true); dn.setSize(1200, 800); dn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }