如何使用java图形绘制缓冲图像?

时间:2012-05-17 16:34:20

标签: java file-io github bufferedimage graphics2d

我的问题:每次我从缓冲的图像创建图形,然后将另一个缓冲的图像绘制到图形时,我得到一个空白的图像。

我的代码如下。

Graphics2D g2d = atlas.createGraphics();
// images[i] is a buffered image read the fileio
g2d.drawImage(images[i], null, x, y); // Image is not blank, been tested
g2d.dispose();
// then save image

具有讽刺意味的是,在尝试创建一个自包含的示例后,如下所示......它有效。我不太确定我在代码中做错了什么,我想知道是否因为图像不是静态的,图像或其他不静态的变量会影响我的绘图吗?

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import javax.imageio.ImageIO;


public class Main {

    public static void main(String[] args) {
        String FOLDER_LOCATION = "./Images/";

        BufferedImage atlas = new BufferedImage(2048, 2048, BufferedImage.TYPE_INT_ARGB);
        BufferedImage redSquare = readImage(FOLDER_LOCATION + "red.png");

        Graphics2D g2d = atlas.createGraphics();
        g2d.drawImage(redSquare, null, 0, 0);
        g2d.dispose();

        writeImage(atlas, FOLDER_LOCATION + "atlas.png");
    }

    public static BufferedImage readImage(String location) {
        BufferedImage img = null;
        InputStream is = null;
        try {
            is = new FileInputStream(location);
            img = ImageIO.read(is);
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
        return img;
    }

    public static void writeImage(BufferedImage bi, String location) {
        try {
            File file = new File(location);
            ImageIO.write(bi, "png", file);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

}

保存图像后,我看到2048年的2048图像空白。我打印出整个图像,然后得到(0,0,0),但是如果我打印出任何我正在绘制图册的图像,我会得到类似的东西(72,32,283)。

我不太确定我做错了什么,但我这个项目的完整源代码在这里:https://github.com/gemurdock/jTextureAtlas我正在处理的分支在这里:https://github.com/gemurdock/jTextureAtlas/tree/alpha

您必须查看alpha分支以查看我的代码

0 个答案:

没有答案