如何增加tiff图像的大小(高度和宽度)和DPI

时间:2016-03-24 13:25:31

标签: java image bufferedimage fileinputstream jai

Input image

Output Image

我正在将一组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代码中完成了所有操作并且在运行时完成了所有操作

1 个答案:

答案 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。