[英]How to set Dots Per Square Inch (DPI) for PNG in Java?
让我先说我没有代码,我不知道我想做什么。 显然,信息存储在.png文件的元数据中。 我认为这不应该那么难,但事实证明这是一个挑战。
唯一看起来有用的东西是这里的堆栈溢出的帖子。
但是,我试图使用提供的代码和提供的网站来做这些事情并没有取得任何成果。
当我尝试使用Iterator时,如下所示,我得到了iw.hasNext()和iw.next()的错误。
错误是:
类型不匹配:无法从void转换为ImageWriter
for(Iterator iw =(Iterator)ImageIO.getImageWritersByFormatName(formatName); iw.hasNext;){ImageWriter writer = iw.next();
我的问题是,我从哪里开始,我需要寻找什么? 你知道或者你自己做过这些例子吗?
一个侧面说明我关于“如何在图像中设置DPI信息?”的问题。 这个帖子是......
我改变他的代码的方式如下......
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;
}
您的代码在类javax.swing.text.html.HTMLDocument.Iterator
和java.util.Iterator
之间变得混乱。 他的代码使用后者,但你的代码似乎使用前者。 使用完全限定类型,或弄清楚如何修改导入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.