私の問題: バッファリングされた画像からグラフィックスを作成し、そのグラフィックスに別のバッファリングされた画像を描画するたびに、空白の画像が表示されます。
私のコードは次のとおりです。
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 x 2048 の空白の画像しか表示されません。画像全体を印刷すると (0, 0, 0) が得られますが、アトラスに描画している画像を印刷すると (72, 32, 283) のような結果が得られます。
何が間違っているのかよくわかりませんが、このプロジェクトのソースコード全体はここにあります: https://github.com/gemurdock/jTextureAtlasと私が取り組んでいるブランチはここにあります: https://github.com /gemurdock/jTextureAtlas/tree/alpha .
私のコードを見るにはアルファブランチを見る必要があります