java - 如何在 java 中调整 tiff 图像的大小?

标签 java image jai

我想调整 .tiff 文件的大小。我使用 JAI 工具包调整不同类型图像的大小。这是我试图实现的:

int imageWidth = 330;
        int imageHeight = 490;

        BufferedImage tempImage = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics2D = tempImage.createGraphics();
        graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        graphics2D.drawImage(tempImage, 0, 0, imageWidth, imageHeight, null);
        graphics2D.dispose();           

        File outfile = new File("D:/Work/YoursGallery/output.tif");

        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile));

        FileSeekableStream ss = new FileSeekableStream("D:/Work/YoursGallery/sample1.tif");

        ImageDecoder dec = ImageCodec.createImageDecoder("tiff", ss, null);  
        TIFFEncodeParam param = new TIFFEncodeParam();
        param.setTileSize(tempImage.getWidth(), tempImage.getHeight());


        TIFFImageEncoder encoder = (TIFFImageEncoder) TIFFCodec.createImageEncoder("tiff", out, param);         
        encoder.encode(dec.decodeAsRenderedImage());

        out.close();

创建的图像与原始图像具有相同的大小。谁能告诉我这是什么问题?

这是我用来测试它的示例 tiff 图像。

http://docs.google.com/fileview?id=0BxCDhEXNFvbeMTYyMGZmNDYtODhhNy00YWI3LTkxNDgtZTNhM2FhMjg5Y2Q3&hl=en&authkey=CPCEypgM

提前致谢。

最佳答案

那是因为你正在写出仍然是原始图像的 tempImage。

graphics2D.drawImage(image, 0, 0, imageWidth, imageHeight, null);

将其更改为:

graphics2D.drawImage(tempImage, 0, 0, imageWidth, imageHeight, null);

或更改您的其他代码以写出图像而不是 tempImage

--编辑--

OK 尝试 2。也许让源和目标相同是愚蠢的。

   BufferedImage bsrc = ImageIO.read(new File(src));
   BufferedImage bdest =
      new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
   Graphics2D g = bdest.createGraphics();
   AffineTransform at =
      AffineTransform.getScaleInstance((double)width/bsrc.getWidth(),
          (double)height/bsrc.getHeight());
   g.drawRenderedImage(bsrc,at);

试试看 :)

关于java - 如何在 java 中调整 tiff 图像的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3307180/

相关文章:

java - 向 JAXB 生成的 POJO 添加解码方法

xml 添加带有实体的照片

java - Java中读取TIF图像的像素长宽比

php - .htaccess 不包括重写 css 和图像

image - 在 azure 中创建规模集后面的虚拟机镜像

java - JAI 文件加载/文件存储操作与 JAI 图像读取/图像写入操作。差异?

java - 在不通过 Java 缩放其宽度/高度的情况下减小 JPEG 图像大小

java - 不将数字选择器十进制整数传递给新 Activity

java - 如何创建表示 Java long 的字符串,就好像它是无符号的 64 位值一样

java swing jlist addListSelectionListener ListSelectionListener 调用了两次