2013-02-09 158 views
1

我有一个字节数组形式的jpeg图像。我怎样才能得到字节数组的形式,我可以去除元数据的评论节点?以字节数组的形式从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);   
} 

回答

4

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

new MemoryCacheImageInputStream(new ByteArrayInputStream(myimagedata)) 

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

FileCacheImageInputStream也是一个选项,但它涉及在临时缓存文件系统中提供一个目录......并且在这种情况下这似乎是不受欢迎的。

+0

完美,谢谢 – Shoe 2013-02-10 19:49:30