讓我開始,我沒有代碼,我不知道我應該做什麼。顯然這些信息存儲在.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