1

JAIMosaicDescriptorを使用して、1つの画像モザイクに結合している一連の画像があります。

ほとんどの画像は同じサイズですが、小さい画像もあります。不足しているスペースを白で埋めたいのですが、デフォルトでは、MosaicDescriptorは黒を使用しています。double []の背景パラメータを{255}に設定してみました。これにより、欠落しているスペースが白で埋められますが、他のフルサイズの画像の一部に変色が生じます。

私はどんな方法にもオープンです-これを行うにはおそらく多くの方法がありますが、ドキュメントをナビゲートするのは困難です。小さい画像をBufferedImageに変換し、空の領域でsetRGB()を呼び出すことを検討しています(ただし、バッチsetRGB()メソッドのスキャンサイズに何を使用するかはわかりません)。

私の質問は本質的に:

  • (JAIまたはBufferedImageで)画像を取得し、特定のサイズにパディングを塗りつぶす/追加するための最良の方法は何ですか?
  • 副作用なしにMosaicDescriptor呼び出しでこれを達成する方法はありますか?

参考までに、モザイクを作成するコードは次のとおりです。

    for (int i = 0; i < images.length; i++) {
        images[i] = JPEGDescriptor.create(new ByteArraySeekableStream(images[i]), null);

        if (i != 0) {
            images[i] = TranslateDescriptor.create(image, (float) (width * i), null, null, null);
        }
    }

    RenderedOp finalImage = MosaicDescriptor.create(ops, MosaicDescriptor.MOSAIC_TYPE_OVERLAY, null, null, null, null, null);
4

1 に答える 1

0

私の質問の一部に答えるために、これは JAI をまったく使用せずに Graphics2D と BufferedImages で達成できます。

    final BufferedImage montageImage = new BufferedImage(montageSize, montageSize, BufferedImage.TYPE_INT_RGB);

    final Graphics2D g2 = montageImage.createGraphics();
    g2.setPaint(Color.WHITE);
    g2.fillRect(0, 0, montageSize, montageSize);

    for (int i = 0; i < imageData.length; i++) {
        final BufferedImage inputImage = ImageIO.read(new ByteArrayInputStream(imageData[i]));
        g2.drawImage(inputImage, i * size, 0, null);
     }

    g2.dispose();

基本的に、イメージは目的のフル サイズで作成され、白で塗りつぶされます。次に、小さい画像が正しい場所に描画されます。

于 2010-03-15T21:15:51.113 に答える