让我开始,我没有代码,我不知道我应该做什么。显然这些信息存储在.png文件的元数据中。我认为这不应该这么难,但是这是一个挑战。如何在Java中为PNG设置每平方英寸点(DPI)?
看起来有点有用的唯一的东西是堆栈溢出的以下帖子。
How to set DPI information in an image?
不过,我曾尝试使用系统提供的代码,并提供了做这样的事情,并取得了什么网站。
当我尝试使用Iterator,如下所示时,iw.hasNext()和iw.next()都出现错误。
错误是:
- 的hasNext()方法是未定义的类型HTMLDocument.Iterator
类型不匹配:不能从空隙转换成的ImageWriter
为(迭代IW =(迭代)ImageIO.getImageWritersByFormatName(formatName); iw.hasNext;){ImageWriter writer = iw.next();
我的问题是,我从哪里开始?我需要什么,寻找?是否有任何你知道或者你自己做过的例子?
一个一个侧面说明了我对问题“如何设置DPI信息的图像吗?”发布这是...
- 为什么当我像他一样使用迭代器,我得到错误?
- 什么是“INCH_2_CM”假设是/是?
我改变了自己的代码如下的方式......
for (Iterator iw = (Iterator) ImageIO.getImageWritersByFormatName(formatName); iw.hasNext();) {
ImageWriter writer = iw.next();
ImageWriteParam writeParam = writer.getDefaultWriteParam();
ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);
IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);
if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported()) {
continue;
}
setDPI(metadata);
final ImageOutputStream stream = ImageIO.createImageOutputStream(output);
try {
writer.setOutput(stream);
writer.write(metadata, new IIOImage(gridImage, null, metadata), writeParam);
} finally {
stream.close();
}
break;
}
INCH_2_CM可能是一个“最终”变量,等于2.54,乘法常量将以英寸为单位的长度转换为以厘米为单位的值。 – corsiKa