使用 Java 进行图像处理 - 编码输出高分辨率图像

版权声明:转载时请务必保留以下作者信息和链接
作者:陈维(chenweionline@hotmail.com)作者的网站:http://www.chenwei.mobi

通常我们使用Java 编码输出图像默认的图像分辨率是72dpi(关于图像分辨率可以看我转载的一篇文章《图片分辨率介绍》),PC显示器的设备分辨率一般在60~120dpi之间,而熟悉印刷行业的朋友都知道,印刷一张图像需要的图像分辨率一般是300dpi,就是说这样的图像在显示器上显示可能很细腻但是印刷输出的效果却非常粗糙。那么我们针对印刷或者其他需要高分辨率的应用场合,就需要输出更高分辨率的图像,可是纵观Java SE 中标准的ImageIO 库并没有提供设置DPI值的方法,那么怎么使用Java生成适合印刷或者更高分辨率的图像呢?

幸好,JAI_ImageIO 为我们解决了这个难题,或者只能说部分解决。目前JAI_ImageIO_1.1 对于设置DPI 信息的支持仅限于TIFF格式,我并没有在JAI_ImageIO_1.1 中找到针对其他图像格式(例如常见的JPEG)设置DPI 的方法。

JAI_ImageIO_1.1 中对于的TIFF 格式提供了2种途径(DOM 和 API)可以在图像编码时将DPI 信息设置进Meatadata。下面是一段创建图像并且以300dpi 编码输出的样例程序,它分别就这两种方法都做了实现,可以提供大家学习参考。编译运行需要引用JAI_ImageIO_1.1,可以从https://jai-imageio.dev.java.net/下载。

import  com.sun.media.imageio.plugins.tiff.BaselineTIFFTagSet;
import  com.sun.media.imageio.plugins.tiff.TIFFDirectory;
import  com.sun.media.imageio.plugins.tiff.TIFFField;
import  com.sun.media.imageio.plugins.tiff.TIFFTag;
import  java.awt.image.BufferedImage;
import  java.awt.image.RenderedImage;
import  java.io.File;
import  java.util.Iterator;
import  javax.imageio.IIOImage;
import  javax.imageio.ImageIO;
import  javax.imageio.ImageTypeSpecifier;
import  javax.imageio.ImageWriter;
import  javax.imageio.metadata.IIOInvalidTreeException;
import  javax.imageio.metadata.IIOMetadata;
import  javax.imageio.metadata.IIOMetadataNode;
import  javax.imageio.stream.FileImageOutputStream;

/**
 * 设置自定义dpi值到TIFF格式图像的样例程序。
 * 需要 JAI_ImageIO_1.1 提供支持。
 
*/

public   class  SetDPI4TIFF  {

    
private static String METADATA_NAME = "com_sun_media_imageio_plugins_tiff_image_1.0";
    
private static int DPI_X = 300;
    
private static int DPI_Y = 300;
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值