获得的元数据从JPEG中的字节数组形式(Getting metadata from JPEG in

2019-10-17 16:38发布

我有一个字节数组形式的JPEG图像。 我怎样才能获得的形式,我可以剥夺元数据的注释节点的字节数组?

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);          
}

Answer 1:

你似乎你是(只),询问如何创建ImageInputStream从字节数组读取。 从阅读的javadoc,我认为这应该工作:

new MemoryCacheImageInputStream(new ByteArrayInputStream(myimagedata))

FileImageInputStream类没有构造器,允许你从什么,但在文件系统中的文件读取。

FileCacheImageInputStream也将是一种选择,但它涉及到在提供临时缓存文件系统中的目录......在这方面似乎不可取。



文章来源: Getting metadata from JPEG in byte array form