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

news/2025/2/22 19:37:45/

用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();

}

}

}


http://www.ppmy.cn/news/660508.html

相关文章

如何把像素修改为300dpi?

1、首先打开Photoshop,打开照片,点击界面上方文件选项,再点击打开选项即可。 2、通过菜单,找到“图像-图像大小”选项。 3、然后去图像大小里面设置。 4、之前为72dpi, 把像素改为350dpi。 5、然后,可以看到图片自动变…

怎么修改图片为300dpi?如何在线修改分辨率?

​分辨率300dpi怎么调?除了PS其实我们还有更简单的方法,使用压缩图的修改图片分辨率工具,无需下载任何软件就可以直接在线修改分辨率了,来看看具体步骤吧。 1、打开压缩图选择修改分辨率。 2、上传图片,设置想要的分辨…

如何实现Tomcat部署及优化

目录 一、Tomcat概述 Tomcat中的核心组件(用于Java环境) Tomcat两种优化 Tomcat Web服务 JSP容器(翻译功能) Servlet处理动态页面 二、Tomcat内部工作流程 三、Tomcat功能组件结构 Connector连接器 Container容器 四个…

数分面试题-业务题3

目录 1、一个网站的销售额变低,从哪几个方面考量?2、用户流失分析,新用户流失与老用户流失的区别3、GMV上升20%怎么分析?4、一款游戏收入下降了,怎么分析?5、现在有一个游戏测试的环节,游戏测试…

uniapp - 仿抖音短视频项目

仿抖音短视频阅读手册 特殊通知 1.请用户认真阅读以下说明,千万不能混淆页面随意引入,如果你发现运行后页面样式排版错乱,大概率是引入错误喔。 2.请App端用户将HbuilderX版本调整到3.3.9版本或3.3.9以下的版本,以规避list-cell…

AR宇航员互动体验软件:虚拟与现实叠加增强体验感

随着科技的不断发展,人们对太空探索的兴趣和热情也越来越高涨。为了满足人们对太空探索的渴望,广州华锐互动研发了宇航员AR模拟体验软件,这种软件可以让用户身临其境地体验太空探索的过程,提供一种全新的、令人兴奋的太空探索新体…

spark外置external shuffle service使用介绍

shuffle是什么 shuffle是Hadoop大数据计算中,一个必不可少的环节,通过shuffle可以将不同节点上的同类数据给移动到一起,这在分组,排序,聚合的场景中非常常见,简单图示如下: MapReduce数据处理模…

32位的二进制数

给出一个小于2^32的正整数。这个数可以用一个32位的二进制数表示(不足32位用0补足)。我们称这个二进制数的前16位为“高位”,后16位为“低位”。将它的高低位交换,我们可以得到一个新的数。试问这个新的数是多少(用十进…