Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以字节数组形式从JPEG获取元数据_Java_Image_Metadata_Byte_Jpeg - Fatal编程技术网

Java 以字节数组形式从JPEG获取元数据

Java 以字节数组形式从JPEG获取元数据,java,image,metadata,byte,jpeg,Java,Image,Metadata,Byte,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

我有一个字节数组形式的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);          
}
您似乎正在(只是)询问如何创建从字节数组读取的。通过阅读javadocs,我认为这应该是可行的:

new MemoryCacheImageInputStream(new ByteArrayInputStream(myimagedata))
FileImageInputStream
类没有一个构造函数,它允许您读取文件系统中除文件以外的任何内容

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

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

new MemoryCacheImageInputStream(new ByteArrayInputStream(myimagedata))
FileImageInputStream
类没有一个构造函数,它允许您读取文件系统中除文件以外的任何内容

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