Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 在neo4j中插入1 MB图像在检索时返回不同的大小(536 KB)_Java_Database_Neo4j - Fatal编程技术网

Java 在neo4j中插入1 MB图像在检索时返回不同的大小(536 KB)

Java 在neo4j中插入1 MB图像在检索时返回不同的大小(536 KB),java,database,neo4j,Java,Database,Neo4j,我正在尝试使用以下代码在neo4j中插入1 MB图像: File fnew = new File("C:\\Users\\myimage.jpg"); BufferedImage originalImage = ImageIO.read(fnew); ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.flus(); ImageIO.write(originalImage, "jpg", baos); retu

我正在尝试使用以下代码在neo4j中插入1 MB图像:

 File fnew = new File("C:\\Users\\myimage.jpg");
 BufferedImage originalImage = ImageIO.read(fnew);
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 baos.flus();
 ImageIO.write(originalImage, "jpg", baos);
 return baos.toByteArray();
然后,我使用以下命令插入此字节数组:

 user.setProperty("photo", photo);
一切顺利。当我尝试使用以下方法选择照片时,它会将照片以536KB的大小写入硬盘,而不是原来的1MB大小

 byte[] imageInByte = (byte[]) user.getProperty("photo");
 InputStream in = new ByteArrayInputStream(imageInByte);
 BufferedImage bImageFromConvert = ImageIO.read(in);
 ImageIO.write(bImageFromConvert, "jpg", new File("C:\\newimage.jpg"));
现在奇怪的是:我可以看到图像,打开它,同样的分辨率,但在质量方面我看不到任何区别。看起来它被压缩了


为什么会发生这种情况?

通过ImageIO保存jpg图像会导致jpg的有损压缩(我相信质量默认为70%)。您可以a)在写入文件时更改图像质量(请参阅),或者b)如果您实际上不需要BuffereImage,只需将字节从文件读取/写入数据库即可

+1用于解释为什么会发生这种情况。然而,值得一提的是,如果不处理图像,则无需使用ImageIO。直接读取文件中的字节谢谢!这确实是问题所在!我不再使用BuffereImage了。