複数の画像を1つに連結して作成しようとしていますが、問題が発生しています。これを分離するために、JAI APIの使い方を理解するために解決しようとしている次のPOCを作成しました。jaiでモザイクを作成する
POCには、「image1.gif」と「image2.gif」の2つの画像があり、どちらも256x256です。目的はそれらを水平に1つの画像 "image3.png"(512x256)に連結することです。 JAIを使用してこれを記述したコードは次のとおりです。
try {
InputStream stream1 = new FileInputStream("D:\\poc\\image1.gif");
InputStream stream2 = new FileInputStream("D:\\poc\\image2.gif");
RenderedImage image1 = ImageIO.read(stream1);
RenderedImage image2 = ImageIO.read(stream2);
ImageLayout imageLayout = new ImageLayout(0,0,512,256);
RenderingHints renderingHints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, imageLayout);
RenderedImage finalImage = MosaicDescriptor.create(new RenderedImage[]{image1, image2}, MosaicDescriptor.MOSAIC_TYPE_OVERLAY, null, null, null, null, renderingHints);
FileStoreDescriptor.create(finalImage, "D:\\poc\\image3.png", "PNG", null, null, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
} catch (IOException e) {
e.printStackTrace();
return;
}
は私は何を取得することは、画像の左側にその全体が最初のイメージ(image1)と、正しい寸法512x256の画像であり、画像の右側完全に黒。つまり、image1.gifを256x256の黒い四角で連結したような感じです。
MosaicTypeをMosaicDescriptor.MOSAIC_TYPE_BLENDに変更しようとしましたが、これはちょうど左半分のみがimage2の上にオーバーレイされたイメージ1(またはその逆)から構成されます。
ImageLayoutコンストラクタの最初の2つのパラメータを変更しようとしました。これはどちらでも動作しません。たとえば、ImageLayoutの最初のパラメータを-256に設定できますが、image1は画像の右半分に表示され、画像の左半分は黒く表示されます。
助けてください!
JAIでモザイクを作成する方法についてはわかりませんが、JAIとJAI/ImageIOをダウンロードする場所を教えてください。私は私の心を失っている...ありがとう! – Gevorg
うん、それは奇妙だ、私が行ったリンクのように見える、もう存在しない。しかし、バイナリはhttp://download.java.net/media/jai/builds/release/1_1_3/ – Kidburla
で入手できます。非常に奇妙です。ありがとうございます。あなたはjai-imageioの場所を知っていますか? 1つだけ?ありがとう! – Gevorg