使用pngj在png图像中编写图像元数据

时间:2016-02-22 10:14:04

标签: java io png metadata

您好我正在使用PNGJ在png图像中编写一些自定义元数据。

我能够在服务器端使用PngJWriter编写元数据,并能够在客户端使用PngJ Reader读取元数据。

但是,如果我将图像保存在本地磁盘上并尝试使用javax.imageio。*类读取元数据,我无法读取图像中的元数据。

我尝试使用http://www.extractmetadata.com/阅读,但仍无效。

以下是我用来编写它的代码。

 public synchronized static byte[] writeMetaDataInImageUsingPngJ(byte[] imageData, String key,                                                                  String metaData)
{
    InputStream image = new ByteArrayInputStream(imageData);
    PngReader reader = new PngReader(image);
    OutputStream outStream = new ByteArrayOutputStream();

    PngWriter writer = new PngWriter(outStream, reader.imgInfo);
    // instruct the writer to copy all ancillary chunks from source
    writer.copyChunksFrom(reader.getChunksList(),      ChunkCopyBehaviour.COPY_ALL_SAFE);
    // add a new textual chunk (can also be done after writing the rows)

    writer.getMetadata().setText(key, metaData);
    // copy all rows
    for (int row = 0; row < reader.imgInfo.rows; row++ )
    {
        IImageLine l1 = reader.readRow();
        writer.writeRow(l1);
    }

    reader.end();
    writer.end();
    return ((ByteArrayOutputStream) outStream).toByteArray();

}

如果用PNGJ写的话,如何确保用户可以使用普通库读取元数据。

0 个答案:

没有答案