PNGJ:无法使用自己的密钥添加元数据



我需要在创建 png 期间添加元数据,我执行以下操作:

private byte[] createData(BufferedImage image, String metaData, float dpi) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
final int width = image.getWidth();
final int height = image.getHeight();
final boolean alphaChannel = image.getAlphaRaster() != null;
ImageInfo imageInfo = new ImageInfo(width, height, 8, alphaChannel);
PngWriter writer = new PngWriter(bos, imageInfo);
writer.getMetadata().setText("mykey", "xxxx");
writer.getMetadata().setDpi(dpi);
convertToRGB(image, writer);
writer.end();
return bos.toByteArray();
}

当立即读回它时,找不到带有该键的值: PngReader reader = new PngReader(is(; 字符串 mrv = reader.getMetadata((.getTxtForKey("mykey"(

但是,已设置 Pdi 元数据。使用已知的东西代替我的密钥,比如PngChunkTextVar.KEY_Comment也无济于事。 我调试了写作,在 writer.end(( 中,带有我的键的值就在那里。

我做错了什么?如何做到这一点?

好吧,事实证明我的阅读代码中缺少一些东西,即:

reader.readSkippingAllRows();

之后我的代码就可以工作了。

最新更新