我有一组图像,我使用JAI的MosaicDescriptor合并为单个图像拼接。
大多数图像大小相同,但有些图像较小。我想用白色填充缺失的空间 - 默认情况下,MosaicDescriptor使用黑色。我尝试将double []背景参数设置为{255},并用白色填充缺失的空间,但它也会在其他一些全尺寸图像中引入一些变色。
我对任何方法持开放态度 - 可能有很多方法可以做到这一点,但文档很难导航。我正在考虑将任何较小的图像转换为BufferedImage并在空白区域调用setRGB()(尽管我不确定批量setRGB()方法中的scanize用什么)。
我的问题基本上是:
供参考,以下是创建马赛克的代码:
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);
答案 0 :(得分:0)
要回答我的部分问题,可以使用Graphics2D和BufferedImages完成,而不使用JAI:
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();
基本上,图像是按照所需的全尺寸创建的,并用白色填充。然后将较小的图像绘制在正确的位置。