【发布时间】:2012-05-19 07:46:10
【问题描述】:
让我从我没有代码开始,我不知道我应该做什么。显然,信息存储在 .png 文件的元数据中。我认为这应该不难做到,但事实证明这是一个挑战。
唯一看起来有点用处的是堆栈溢出的以下帖子。
How to set DPI information in an image?
但是,我尝试使用提供的代码和提供的网站来执行此类操作,但一无所获。
当我尝试使用迭代器时,如下所示,iw.hasNext() 和 iw.next() 都出现错误。
错误是:
- 没有为 HTMLDocument.Iterator 类型定义方法 hasNext()
-
类型不匹配:无法从 void 转换为 ImageWriter
for (Iterator iw = (Iterator) 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 的
final变量,它是将长度以英寸为单位的乘法常数转换为其以厘米为单位的值。
标签: java iterator png stack-overflow dpi