0
助けてください。BufferedImageを別のBufferedImageに描画することはできません
私は大きな出力BufferedImage(スケーリング付き)に入力BufferedImageを描画しようとしています。 、次のコードを見てみてください:
public class Main {
public void print(BufferedImage img, int width, int height) {
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
System.out.print(img.getRGB(x, y) + " ");
}
System.out.println("");
}
}
public static void main(String[] args) {
Main app = new Main();
// create input image
int inputWidth = 2;
int inputHeight = 2;
BufferedImage inputImg = new BufferedImage(inputWidth, inputHeight, BufferedImage.TYPE_INT_ARGB);
// fill input image
for (int y = 0; y < inputHeight; y++) {
for (int x = 0; x < inputWidth; x++) {
inputImg.setRGB(x, y, y * inputWidth * (1 << 16) + x);
}
}
// print
app.print(inputImg, inputWidth, inputHeight);
// create output image
int outputWidth = 4;
int outputHeight = 4;
BufferedImage outputImg = new BufferedImage(outputWidth, outputHeight, BufferedImage.TYPE_INT_ARGB);
// draw inputImg into outputImg
Graphics2D g = outputImg.createGraphics();
g.drawImage(inputImg, 0, 0, outputImg.getWidth(), outputImg.getHeight(), 0, 0, inputImg.getWidth(), inputImg.getHeight(), null);
// print
app.print(outputImg, outputImg.getWidth(), outputImg.getHeight());
}
}
実行は、次の出力を生成します。私は描くことができるよので
0 1
131072 131073
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
は、ライン呼び出し、例えば、Graphics2Dオブジェクトの作品のように思えますdrawLine関数です。ですから、私はinputImgが問題の原因だと思いますが、何が間違っているのか分かりません。
更新: 私はAffineTransform
を使用しようとしましたが、残念ながら助けにはなりませんでした。私に
Graphics2D g = outputImg.createGraphics();
AffineTransform at = new AffineTransform();
at.setToIdentity();
at.scale(2, 2);
g.drawImage(inputImg, at, null);
イメージを手動でスケーリングする必要がありますか? 'Graphcs2D'にはスケーリング操作を実行できる' AffineTransform'があります – MadProgrammer
ドキュメントでは、このバージョンのdrawImageはその場でinputImageを拡大する必要があると書かれています[drawImage](https://docs.oracle.com/javase/7/docs/api/java/ awt/Graphics.html#drawImage(java.awt.Image、%20int、%20int、%20int、%20int、%20int、%20int、%20int、%20int、%20java.awt.image.ImageObserver)) – JavaPupil
ええそれはいいです、あなたが 'AffineTransform'を使うことができない何らかの理由はありますか? – MadProgrammer