我想调整 .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 图像。
提前致谢。
最佳答案
那是因为你正在写出仍然是原始图像的 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/