我想填充新的tiff图像的元数据。我知道以下代码将缓冲后的图像写入byte []中,并压缩为“ JPEG”方法,然后将其压缩为90(0-100)。
some_numbers =[1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77]
new_string = []
print('some_numbers string: ',some_numbers)
print('new_string string: ',new_string)
#pop the last variable and insert into 'new_string'
new_string.insert(-1,some_numbers[-1])
#begin loop
while some_numbers:
#insert the pops from some_numbers into new string in a reverse order
new_string.insert(-1,some_numbers.pop())
#delete redundant number at the end of list
del new_string[-1]
print("some_numbers string: ",some_numbers)
print("reversed string: ",new_string)
现在,我要填充此.tif的元数据。到目前为止,我已完成以下操作:
ImageIO.scanForPlugins();
TIFFImageWriterSpi tiffspi = new TIFFImageWriterSpi();
javax.imageio.ImageWriter writerIO = tiffspi.createWriterInstance();
ImageWriteParam param = writerIO.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("JPEG");
param.setCompressionQuality(90.);
File fOutputFile = new File(my saving route for the .tif);
ImageOutputStream ios = ImageIO.createImageOutputStream(fOutputFile);
writerIO.setOutput(ios);
writerIO.write(null, new IIOImage(my BufferedImage, null, null), param);
writerIO.dispose();
ios.flush();
ios.close();
其中metaseries是一个Hashtable,我将元数据信息作为键和值。 load_metadata是以下函数:
IIOMetadata metadata = writerIO.getDefaultImageMetadata(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_BYTE_GRAY), param);
metadata.setFromTree(metadata.getNativeMetadataFormatName(),load_metadata(metadata.getAsTree(metadata.getNativeMetadataFormatName()),metaseries));
要添加此元数据,我只需使用以下方式更改writerIO.write:
public Node load_metadata(Node rootIOMetadata, Hashtable<String, Object> metadata){
IIOMetadataNode n = new IIOMetadataNode("Data");
//We get all the keys and values
for(Map.Entry<String, Object> entry: metadata.entrySet()){
if (!entry.getKey().equals(null)){
n.setAttribute(entry.getKey().toString(), entry.getValue().toString());
}
}
rootIOMetadata.appendChild(n);
return rootIOMetadata;
}
但是,我仍然看不到最终图像中的任何元数据。我有两个问题: