我正在将一组tiff图像合并为一个,同时想要在java中调整/重新缩放最终的tiff图像。有没有办法做到这一点 。以下是我合并的逻辑。我成功地合并但不能增加高度和宽度。
ByteArrayOutputStream baos=new ByteArrayOutputStream();
//ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", baos, params);
List<BufferedImage> imageList = new ArrayList<BufferedImage>();
for (int i = 1; i < images.size(); i++)
{
imageList.add(resizedImage);
}
params.setCompression(params.COMPRESSION_NONE);
params.setExtraImages(imageList.iterator());
TIFFField[] extras = new TIFFField[2];
extras[0] = new TIFFField(282, TIFFField.TIFF_RATIONAL, 1, (Object) new long[][] { { (long) 300, (long) 1 },
{ (long) 0, (long) 0 } });
extras[1] = new TIFFField(283, TIFFField.TIFF_RATIONAL, 1, (Object) new long[][] { { (long) 300, (long) 1 },
{ (long) 0, (long) 0 } });
params.setExtraFields(extras);
ImageEncoder encoder = ImageCodec.createImageEncoder("tiff", baos, params);
encoder.encode(images.get(0));
baos确实保存了最终图像的字节,我将其转换为tiff
创建组合tiff图像的最后步骤
FileOutputStream fos = new FileOutputStream (new File(inputDir + "\\combined.tiff"));
baos.writeTo(fos);
但如何增加高度和宽度。请注意我已经在java代码中完成了所有操作并且在运行时完成了所有操作
答案 0 :(得分:0)
我会试一试,因为我不明白你在用tiffs做什么:
List<BufferedImage> imageList = new ArrayList<BufferedImage>();
for (int i = 0; i < images.size(); i++)
{
BufferedImage b=new BufferedImage(1500, 1500, BufferedImage.TYPE_INT_RGB);
Graphics g=b.getGraphics();
g.drawImage(images.get(i), 0, 0, b.getWidth(), b.getHeight(), null);
imageList.add(b);
}
这会将列表图像中的图像转换为1500,1500,并将它们存储在列表imageList中,然后用于创建tiff。