Java: Load image from file, edit and add to JPanel

前端 未结 3 1575
陌清茗
陌清茗 2021-01-28 05:40

I want to load an image from my computer into 2D Graphics so that I can edit it afterwards and then I want to add it to JPanel. If you need to see my project I can

相关标签:
3条回答
  • 2021-01-28 05:41

    To load your image into the memory, you can use ImageIO.read(File). To edit it afterwards, obtain a Graphics2D instance from it by calling createGraphics():

    BufferedImage img = ImageIO.read(yourFile);
    Graphics2D g = img.createGraphics();
    // Draw here on the graphics
    g.dispose();
    

    You can even turn on anti-alias by setting a RenderingHint before drawing:

    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                       RenderingHints.VALUE_ANTIALIASING_ON);
    

    Then, to add it to a JPanel, create your custom JComponent and add an instance of that component to your JPanel:

    public class JImageComponent extends JComponent
    {
        private BufferedImage img;
    
        public JImageComponent(BufferedImage bi)
        {
            img = bi;
        }
    
        @Override
        public void paintComponent(Graphics g)
        {
            g.drawImg(img, 0, 0, this);
        }
    
    }
    
    0 讨论(0)
  • 2021-01-28 05:59

    please read this tutorials about Icon in Swing and your Image/ImageIcon would by placed to the JLabel, this way eliminated all troubles came from paint/paintComponents ...

    0 讨论(0)
  • 2021-01-28 05:59

    For image loading you should use ImageIO object with method read(File file) see docs. Then you will get BufferedImage instance of which you can make your changes through Graphics2D instance which you'll obtain by calling createGraphics() on the image instance see docs. Last thing, override method paintComponent() from JPanel or better JComponent see docs and there you can draw your image on Graphics instance which you'll get as parameter in paintComponent(Graphics g) method by calling drawImage(Image img, int x, int y, ImageObserver observer) see docs where ImageObserver set to null.

    0 讨论(0)
提交回复
热议问题