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);
}
}
