Java 在neo4j中插入1 MB图像在检索时返回不同的大小(536 KB)
我正在尝试使用以下代码在neo4j中插入1 MB图像: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
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了。