java
My code is attached below..
I want to retrieve the image from database in the same panel in the original size...
But it see in small size...
CAn you help see the retrive images inside a border in right side of the same Frame
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import javax.swing.JTextField;
import java.sql.*;
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.JTextArea;
public class RetrieveImage implements WindowListener, ActionListener {
File file;
int height,width;
RetrieveImage() {
JFrame f = new JFrame("Image Retrieval");
f.getContentPane().setLayout(null);
final JTextField text = new JTextField("", 20);
JLabel JLabel1 = new JLabel("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n TEXTURE FEATURES \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", JLabel.CENTER);
JLabel JLabel4 = new JLabel("Enter Energy ");
final JTextField val1 = new JTextField("", 30);
JLabel JLabel5 = new JLabel("Enter Entropy ");
final JTextField val4 = new JTextField("", 30);
JLabel JLabel6 = new JLabel("Enter Contrast ");
final JTextField val5 = new JTextField("", 30);
JLabel JLabel7 = new JLabel("Enter Homogenity ");
final JTextField val6 = new JTextField("", 30);
JLabel JLabel8 = new JLabel("Enter Correlation ");
final JTextField val7 = new JTextField("", 30);
JLabel JLabel2 = new JLabel("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n COLOR FEATURES \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ", JLabel.CENTER);
final JTextField val2 = new JTextField("", 20);
JLabel JLabel3 = new JLabel("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n SHAPE FEATURES \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", JLabel.CENTER);
final JTextField val3 = new JTextField("", 20);
JButton Button1 = new JButton("Browse");
JButton Button2 = new JButton("Search from database");
final JLabel lab = new JLabel();
final JLabel l = new JLabel();
text.setBounds(10, 10, 120, 20);
Button1.setBounds(140, 10, 100, 20);
l.setBounds(250, 10, 500, 200);
JLabel1.setBounds(10, 50, 200, 15);
JLabel4.setBounds(10, 90, 200, 20);
val1.setBounds(90, 90, 120, 20);
JLabel5.setBounds(10, 130, 200, 20);
val4.setBounds(90, 130, 120, 20);
JLabel6.setBounds(10, 170, 200, 20);
val5.setBounds(90, 170, 120, 20);
JLabel7.setBounds(10, 210, 200, 20);
val6.setBounds(90, 210, 120, 20);
JLabel8.setBounds(10, 250, 200, 20);
val7.setBounds(90, 250, 120, 20);
JLabel2.setBounds(10, 290, 200, 15);
val2.setBounds(10, 330, 120, 20);
lab.setBounds(750, 250, 500, 400);
JLabel3.setBounds(10, 370, 200, 15);
val3.setBounds(10, 410, 120, 20);
Button2.setBounds(90, 450, 200, 20);
f.setSize(1000, 768);
f.setBackground(Color.GRAY);
f.add(text);
f.add(Button1);
f.add(l);
f.add(JLabel1);
f.add(JLabel4);
f.add(val1);
f.add(JLabel5);
f.add(val4);
f.add(JLabel6);
f.add(val5);
f.add(JLabel7);
f.add(val6);
f.add(JLabel8);
f.add(val7);
f.add(JLabel2);
f.add(val2);
f.add(JLabel3);
f.add(val3);
f.add(Button2);
f.add(lab);
f.setVisible(true);
Button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.addChoosableFileFilter(new ImageFileFilter());
final int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
String path = file.getPath();
text.setText(path);
l.setIcon(new ImageIcon(path));
}
}
});
Button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String feature1 = val1.getText();
String feature4 = val4.getText();
String feature5 = val5.getText();
String feature6 = val6.getText();
String feature7 = val7.getText();
String feature2 = val2.getText();
String feature3 = val3.getText();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = null;
String url = "jdbc:mysql://localhost:3306/";
String db = "cbir";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "root";
con = DriverManager.getConnection(url + db, user, pass);
File image = new File("D:\\java.gif");
String path1 = image.getPath();
String sql = "SELECT image FROM enhancement WHERE Energy like '%" + feature2 + "%'";
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
//String name = resultSet.getString(1);
//String description = resultSet.getString(2);
FileOutputStream fos = new FileOutputStream(image);
byte[] buffer = new byte[1];
InputStream is = resultSet.getBinaryStream(1);
while (is.read(buffer) > 0) {
fos.write(buffer);
}
fos.close();
}
lab.setIcon(new ImageIcon(path1));
} catch (Exception ex) {
System.out.println("error :" + ex);
}
//lab.setBounds(400, 300, width, height);
}
});
}
public static void main(String args[]) {
RetrieveImage img = new RetrieveImage();
}
public static ImageIcon createImageIcon(String path, String description) {
java.net.URL imgURL = RetrieveImage.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
public void windowOpened(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowClosing(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowClosed(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowIconified(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowDeiconified(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowActivated(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowDeactivated(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
View Answers
April 9, 2010 at 3:17 PM
Hi Friend,
The code, we have provided you previously was working fine. Using ImageIcon class, you can get the height and width of the retrieved image which are then used in setBounds() method in order to display image in original size.
Here is the code:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.*;
import java.sql.*;
import javax.imageio.*;
public class RetrieveImage implements WindowListener, ActionListener {
File file;
RetrieveImage() {
JFrame f = new JFrame("Image Retrieval");
f.getContentPane().setLayout(null);
final JTextField text = new JTextField("", 20);
JLabel JLabel1 = new JLabel("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n TEXTURE FEATURES \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", JLabel.CENTER);
JLabel JLabel4 = new JLabel("Enter Energy ");
final JTextField val1 = new JTextField("", 30);
JLabel JLabel5 = new JLabel("Enter Entropy ");
final JTextField val4 = new JTextField("", 30);
JLabel JLabel6 = new JLabel("Enter Contrast ");
final JTextField val5 = new JTextField("", 30);
JLabel JLabel7 = new JLabel("Enter Homogenity ");
final JTextField val6 = new JTextField("", 30);
JLabel JLabel8 = new JLabel("Enter Correlation ");
final JTextField val7 = new JTextField("", 30);
JLabel JLabel2 = new JLabel("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n COLOR FEATURES \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ", JLabel.CENTER);
final JTextField val2 = new JTextField("", 20);
JLabel JLabel3 = new JLabel("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n SHAPE FEATURES \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", JLabel.CENTER);
final JTextField val3 = new JTextField("", 20);
JButton Button1 = new JButton("Browse");
JButton Button2 = new JButton("Search from database");
final JLabel lab = new JLabel();
final JLabel l = new JLabel();
text.setBounds(10, 10, 120, 20);
Button1.setBounds(140, 10, 100, 20);
l.setBounds(250, 10, 500, 200);
JLabel1.setBounds(10, 50, 200, 15);
JLabel4.setBounds(10, 90, 200, 20);
val1.setBounds(90, 90, 120, 20);
JLabel5.setBounds(10, 130, 200, 20);
val4.setBounds(90, 130, 120, 20);
JLabel6.setBounds(10, 170, 200, 20);
val5.setBounds(90, 170, 120, 20);
JLabel7.setBounds(10, 210, 200, 20);
val6.setBounds(90, 210, 120, 20);
JLabel8.setBounds(10, 250, 200, 20);
val7.setBounds(90, 250, 120, 20);
JLabel2.setBounds(10, 290, 200, 15);
val2.setBounds(10, 330, 120, 20);
JLabel3.setBounds(10, 370, 200, 15);
val3.setBounds(10, 410, 120, 20);
Button2.setBounds(90, 450, 200, 20);
f.setSize(1000, 768);
f.setBackground(Color.GRAY);
f.add(text);
f.add(Button1);
f.add(l);
f.add(JLabel1);
f.add(JLabel4);
f.add(val1);
f.add(JLabel5);
f.add(val4);
f.add(JLabel6);
f.add(val5);
f.add(JLabel7);
f.add(val6);
f.add(JLabel8);
f.add(val7);
f.add(JLabel2);
f.add(val2);
f.add(JLabel3);
f.add(val3);
f.add(Button2);
f.add(lab);
f.setVisible(true);
Button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.addChoosableFileFilter(new ImageFileFilter());
final int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
String path = file.getPath();
text.setText(path);
l.setIcon(new ImageIcon(path));
}
}
});
April 9, 2010 at 3:18 PM
continue..
Button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String feature1 = val1.getText();
String feature4 = val4.getText();
String feature5 = val5.getText();
String feature6 = val6.getText();
String feature7 = val7.getText();
String feature2 = val2.getText();
String feature3 = val3.getText();
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = null;
String url = "jdbc:
mysql://localhost:3306/";;
String db = "register";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "root";
con = DriverManager.getConnection(url + db, user, pass);
String sql = "SELECT image FROM enhancement WHERE typ_string2 like '%" + feature2 + "%'";
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
InputStream sImage;
byte[] bytes=new byte[1024];
if (rs.next()) {
bytes = rs.getBytes("image");
}
if (bytes != null) {
File f=new File("img.jpg");
InputStream in = new ByteArrayInputStream(bytes);
BufferedImage image = ImageIO.read(in);
ImageIO.write(image, "jpg", f);
String path=f.getName();
ImageIcon icon = createImageIcon(path,"");
lab.setIcon(icon);
lab.setBounds(350, 330, icon.getIconWidth(), icon.getIconHeight());
}
} catch (Exception ex) {
System.out.println("error :" + ex);
}
}
});
}
public static void main(String args[]) {
RetrieveImage img = new RetrieveImage();
}
public static ImageIcon createImageIcon(String path, String description) {
java.net.URL imgURL = RetrieveImage.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
public void windowOpened(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowClosing(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowClosed(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowIconified(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowDeiconified(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowActivated(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void windowDeactivated(WindowEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
class ImageFileFilter extends javax.swing.filechooser.FileFilter {
public boolean accept(File file) {
if (file.isDirectory()) return false;
String name = file.getName().toLowerCase();
return (name.endsWith(".jpg") || name.endsWith(".png")|| name.endsWith(".gif"));
}
public String getDescription() { return "Images (*.gif,*.bmp, *.jpg, *.png )"; }
}
Thanks