【问题标题】:Getting metadata from JPEG in byte array form以字节数组形式从 JPEG 获取元数据
【发布时间】:2013-02-09 07:39:09
【问题描述】:

我有一个字节数组形式的 jpeg 图像。如何以可以剥离元数据的 cmets 节点的形式获取字节数组?

byte[] myimagedata = ...

ImageWriter writer = ImageIO.getImageWritersBySuffix("jpeg").next();
ImageReader reader = ImageIO.getImageReader(writer);

//Looking for file here but have byte array
reader.setInput(new FileImageInputStream(new File(Byte array cant go here)));

IIOMetadata imageMetadata = reader.getImageMetadata(0);
Element tree = (Element)   imageMetadata.getAsTree("javax_imageio_jpeg_image_1.0");
NodeList comNL = tree.getElementsByTagName("com");
IIOMetadataNode comNode;
if (comNL.getLength() == 0) {
    comNode = new IIOMetadataNode("com");
    Node markerSequenceNode = tree.getElementsByTagName("markerSequence").item(0);
    markerSequenceNode.insertBefore(comNode,markerSequenceNode.getFirstChild());
} else {
    comNode = (IIOMetadataNode) comNL.item(0);          
}

【问题讨论】:

    标签: java image metadata byte jpeg


    【解决方案1】:

    您似乎(只是)询问如何创建一个从字节数组读取的ImageInputStream。通过阅读 javadocs,我认为这应该可行:

    new MemoryCacheImageInputStream(new ByteArrayInputStream(myimagedata))
    

    FileImageInputStream 类没有允许您从文件系统中的文件以外的任何内容读取的构造函数。

    FileCacheImageInputStream 也是一种选择,但它涉及在文件系统中提供一个目录以用于临时缓存......在这种情况下这似乎是不可取的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      相关资源
      最近更新 更多