I want to display an image but don't know what to do. Whether I have to install some library files or simply it can be done I don't know. Actually I want to do image processing, but first I have to take the image input and display image then I can get the effect of image processing as the output and decide whether it(algorithm) is correct or not. I have installed the eclipse only. I have searched in Google also but whatever they suggest is not working well. Either I have to install something or not.
I have tried the following code:
public class ImageTest { public static void main(String[] args){ EventQueue.invokeLater(new Runnable() { public void run(){ ImageFrame frame = new ImageFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } ); } } class ImageFrame extends JFrame{ public ImageFrame(){ setTitle("ImageTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); ImageComponent component = new ImageComponent(); add(component); getContentPane().validate(); getContentPane().repaint(); } public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; } class ImageComponent extends JComponent{ private static final long serialVersionUID = 1L; private Image image; public ImageComponent(){ try{ File image2 = new File("bishnu.jpg"); image = ImageIO.read(image2); } catch (IOException e){ e.printStackTrace(); } } public void paintComponent (Graphics g){ if(image == null) return; int imageWidth = image.getWidth(this); int imageHeight = image.getHeight(this); g.drawImage(image, 50, 50, this); for (int i = 0; i*imageWidth <= getWidth(); i++) for(int j = 0; j*imageHeight <= getHeight();j++) if(i+j>0) g.copyArea(0, 0, imageWidth, imageHeight, i*imageWidth, j*imageHeight); } } It simply shows a graphical window but can't show the image "bishnu.jpg"
Should I install anything in eclipse? But I think nothing needs to install.
24 Answers
import java.awt.FlowLayout; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ public class DisplayImage { public static void main(String avg[]) throws IOException { DisplayImage abc=new DisplayImage(); } public DisplayImage() throws IOException { BufferedImage img=ImageIO.read(new File("f://images.jpg")); ImageIcon icon=new ImageIcon(img); JFrame frame=new JFrame(); frame.setLayout(new FlowLayout()); frame.setSize(200,300); JLabel lbl=new JLabel(); lbl.setIcon(icon); frame.add(lbl); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Running your code shows an image for me, after adjusting the path. Can you verify that your image path is correct, try absolute path for instance?
2If you want to load/process/display images I suggest you use an image processing framework. Using Marvin, for instance, you can do that easily with just a few lines of source code.
Source code:
public class Example extends JFrame{ MarvinImagePlugin prewitt = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.edge.prewitt"); MarvinImagePlugin errorDiffusion = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.halftone.errorDiffusion"); MarvinImagePlugin emboss = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.color.emboss"); public Example(){ super("Example"); // Layout setLayout(new GridLayout(2,2)); // Load images MarvinImage img1 = MarvinImageIO.loadImage("./res/car.jpg"); MarvinImage img2 = new MarvinImage(img1.getWidth(), img1.getHeight()); MarvinImage img3 = new MarvinImage(img1.getWidth(), img1.getHeight()); MarvinImage img4 = new MarvinImage(img1.getWidth(), img1.getHeight()); // Image Processing plug-ins errorDiffusion.process(img1, img2); prewitt.process(img1, img3); emboss.process(img1, img4); // Set panels addPanel(img1); addPanel(img2); addPanel(img3); addPanel(img4); setSize(560,380); setVisible(true); } public void addPanel(MarvinImage image){ MarvinImagePanel imagePanel = new MarvinImagePanel(); imagePanel.setImage(image); add(imagePanel); } public static void main(String[] args) { new Example().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Output:

As a beginer, I found that is easy to see the picture you draw:
Source code
public class CheckCodeTest { private int width = 100, height = 50; private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); @Test public void drawGraphicsTest() throws IOException { Graphics graphics = image.createGraphics(); // draw an orange rectangle graphics.setColor(Color.orange); graphics.fillRect(0,0,width,height); // layout the picture right now! graphics.drawImage(image,0,0,null); ImageIO.write(image, "png", new File("checkcode.png")); } } Output
It produce a picture file under your projects content.
Then you can see what change after adding draw code in small window, it is more convenient than closing an jump-out Frame / Label window:
Hope it helps.