【问题标题】:How to read Image, draw something on it and save result?如何读取图像,在其上绘制一些东西并保存结果?
【发布时间】:2014-03-23 17:36:27
【问题描述】:

我想读取一些图像,然后在其上绘制一些形状并将带有形状的图像保存为新文件。我尝试做类似的事情,但它不起作用。

public class Test extends JPanel{

private static BufferedImage br;

public static void main(String[] args) {
    try {
        br=ImageIO.read(new File("rys1.png"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g.drawImage(br,0,0,this);
    g.drawRect(20, 20, 10, 10);
    g.setColor(Color.BLACK);
    try {
        ImageIO.write(br, "png", new File(("D:\\test\\rys"+2)));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

【问题讨论】:

    标签: java swing file-io jpanel paintcomponent


    【解决方案1】:

    试试这个。

    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    public class DrawShapeOnImage {
    
        private static BufferedImage br;
    
        public static void main(String[] args) throws IOException {
            try {
                br = ImageIO.read(new File("resources/1.png"));
                ImageIO.write(getTexturedImage(), "png", new File("resources/2.png"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static BufferedImage getTexturedImage() {
            BufferedImage tmp = new BufferedImage(br.getWidth(), br.getHeight(),
                    BufferedImage.TYPE_INT_ARGB);
            Graphics2D g = tmp.createGraphics();
            g.drawImage(br, 0, 0, null);
            g.setColor(Color.BLACK);
            g.drawRect(20, 20, 10, 10);
            g.dispose();
    
            return tmp;
        }
    
    }
    

    【讨论】:

    • 结果永远不会是paintComponent或渲染器中的任何FileIO
    • 如果它有助于解决问题,请accept回答。还请查看您的earlier questions,看看您是否也可以接受其中任何一个的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2022-06-10
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多