让我从我没有代码开始,我不知道我应该做什么。显然,信息存储在 .png 文件的元数据中。我认为这应该不难做到,但事实证明这是一个挑战。
唯一看起来有点有用的是堆栈溢出的以下帖子。
但是,我尝试使用提供的代码和提供的网站来做这些事情,但一无所获。
当我尝试使用迭代器时,如下所示,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;
}