Java 如何读取图像,在其上绘制一些东西并保存结果?

Java 如何读取图像,在其上绘制一些东西并保存结果?,java,swing,file-io,jpanel,paintcomponent,Java,Swing,File Io,Jpanel,Paintcomponent,我想读一些图像,然后在上面画一些形状,并将带有形状的图像保存为新文件。我试着做那样的事,但不起作用 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) {

我想读一些图像,然后在上面画一些形状,并将带有形状的图像保存为新文件。我试着做那样的事,但不起作用

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();
    }
}
}试试这个

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

}
试试这个

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

}
试试这个

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

}
试试这个

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或Renderer中出现任何文件。如果有助于解决问题,请给出答案。还请查看您的,看看您是否也可以接受这些问题的答案。结果永远不会是paintComponent或Renderer中的任何文件。如果答案有助于解决问题,请提供答案。还请查看您的,看看您是否也可以接受这些问题的答案。结果永远不会是paintComponent或Renderer中的任何文件。如果答案有助于解决问题,请提供答案。还请查看您的,看看您是否也可以接受这些问题的答案。结果永远不会是paintComponent或Renderer中的任何文件。如果答案有助于解决问题,请提供答案。还请检查您的答案,看看您是否也能接受其中任何一个答案。