java jpg 300dpi,用Java输出分辨率300dpi以上的TIFF图像

用Java输出分辨率300dpi以上的TIFF图像

国外期刊发表文章需要提供分辨率在300~600dpi的图像,而使用javax.imageio.ImageIO只能够输出72dpi的JPG、PNG或GIF图像,无法满足要求。

Java Advanced Imaging(JAI)的jai-imageio工具提供了输出高分辨率TIFF图像解决方法。网上有一篇相关的文章《使用 Java 进行图像处理 - 编码输出高分辨率图像》,但是笔者使用其中代码生成的图像在Windows下右键查看属性确实显示为300dpi,但是使用Photoshop或者Fireworks等图像处理工具时却仍然显示为72dpi。本人经过一番摸索,终于解决了这个问题,现总结余下:

先从https://jai-imageio.dev.java.net/binary-builds.html下载jai-imageio.jar,另外编译还需要JAIl的jai_codec.jar和jai_core.jar

import com.sun.media.imageio.plugins.tiff.TIFFTag;

import com.sun.media.jai.codec.TIFFEncodeParam;

import com.sun.media.jai.codec.TIFFField;

import com.sun.media.jai.codecimpl.TIFFImageEncoder;

import java.awt.image.RenderedImage;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

/**

*

TIFFOutput.java

*

Created on Apr 6, 2009, 10:46:41 PM

*

Copyright (c) 2007-2009. CUCKOO Workgroup, USTC, P.R.China

* @author Ren Jian

*/

public class TiffOutput {

public TiffOutput(RenderedImage image, String outputFilePath, int dpi) {

try {

if (image != null) {

TIFFEncodeParam param = new TIFFEncodeParam();

param.setCompression(TIFFEncodeParam.COMPRESSION_NONE);

TIFFField[] extras = new TIFFField[2];

extras[0] = new TIFFField(282, TIFFTag.TIFF_RATIONAL, 1, (Object) new long[][]{{(long) dpi, 1}, {0, 0}});

extras[1] = new TIFFField(283, TIFFTag.TIFF_RATIONAL, 1, (Object) new long[][]{{(long) dpi, 1}, {0, 0}});

param.setExtraFields(extras);

File outputFile = new File(outputFilePath);

outputFile.createNewFile();

FileOutputStream outputStream = new FileOutputStream(outputFile);

TIFFImageEncoder encoder = new TIFFImageEncoder(outputStream, param);

encoder.encode(image);

outputStream.close();

}

} catch (IOException ex) {

ex.printStackTrace();

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值