以前につなぎ合わせた 1 つの画像から、個々の画像を抽出して処理する必要があります。たとえば、以下に示すように、4 つの独立した画像をつなぎ合わせて 1 つの画像を生成します。
画像処理が初めてなので、いくつかの調査を行ったところ、Java Image IOが私の要件に適していることがわかりました。
これは私がこれまでに書いたものです:
画像の抽出と処理
ImageInputStream oldImage = ImageIO
.createImageInputStream(new FileInputStream("Four_Image_Stitched.jpeg"));
ImageReader imageReader = getImageReader(imageFormat);
imageReader.setInput(oldImage);
int nosOfImages = imageReader.getNumImages(true);
System.out.println("Number of Images = " + nosOfImages);
if (nosOfImages > 1) {
for (int i = 0; i < nosOfImages; i++) {
BufferedImage image = imageReader.read(i);
// do some processing
}
}
イメージ リーダー インスタンスの取得
private ImageReader getImageReader(String imageFormat) {
if ("PNG".equalsIgnoreCase(imageFormat)) {
return new PNGImageReader(new PNGImageReaderSpi());
}
if ("JPEG".equalsIgnoreCase(imageFormat)) {
return new JPEGImageReader(new JPEGImageReaderSpi());
}
if ("GIF".equalsIgnoreCase(imageFormat)) {
return new GIFImageReader(new GIFImageReaderSpi());
}
if ("BMP".equalsIgnoreCase(imageFormat)) {
return new BMPImageReader(new BMPImageReaderSpi());
}
return null;
}
ここでの問題は、ステッチされた画像の数に関係なく、すべての形式でimageReader.getNumImages(true)
常に返されることです。1
これは、実際にステッチされた画像の数であり、具体的4
には前述の例であると思います。
ここで何が欠けているのか正確にはわかりません!
この点に関するヘルプやポインタは大歓迎です。
PS:
単一の画像にステッチされた画像の数は事前にわかりません。つまり、単一の画像にはn
、それぞれ異なる寸法の多数の画像が含まれている可能性があります。