1. ホーム
  2. java

[解決済み] 複数のPNGを1つの大きなPNGファイルに結合する方法は?

2022-02-01 20:02:16

質問内容

約6000個のPNGファイル(256*256ピクセル)を持っていて、プログラムによってそれらをすべて含む大きなPNGに結合したいのですが、可能ですか?

そのための最良の/最速の方法は何ですか?

(目的は紙に印刷することなので、何らかのウェブ技術を使うという選択肢はありませんし、1つの画像ファイルを持つことで多くの使用上のミスをなくすことができます)。

fahdの提案を試したのですが、その結果 NullPointerException を作ろうとすると BufferedImage を横24576ピクセル、縦15360ピクセルで表示しています。何かいい方法はないでしょうか?

解決方法を教えてください。

書き込みを行う大きな画像を作成します。行と列の数から寸法を割り出す。

    BufferedImage result = new BufferedImage(
                               width, height, //work these out
                               BufferedImage.TYPE_INT_RGB);
    Graphics g = result.getGraphics();

では、画像をループして描画してみましょう。

    for(String image : images){
        BufferedImage bi = ImageIO.read(new File(image));
        g.drawImage(bi, x, y, null);
        x += 256;
        if(x > result.getWidth()){
            x = 0;
            y += bi.getHeight();
        }
    }

最後にファイルに書き出す。

    ImageIO.write(result,"png",new File("result.png"));