gpt4 book ai didi

java - byte[] 到图像转换 java 中的 IllegalArgumentException

转载 作者:行者123 更新时间:2023-12-01 13:58:44 24 4
gpt4 key购买 nike

我正在使用一个数据库,其中图像存储为字节[]。我编写了这个函数来从 byte[] 数据中获取图像。文件名正确且数据不为空。

public void convert(String fileName , byte[] data) throws IOException
{
File myFile = new File(fileName);
System.out.println("filename is " + file);
ByteArrayInputStream baisData = new ByteArrayInputStream(data);
BufferedImage imag= ImageIO.read(baisData);
if(imag == null)
{
System.out.println("imag is empty");
}
ImageIO.write(imag, "jpg", myFile);
System.out.println("Image file written successfully");
}

但是当我运行这段代码时,我得到了这个输出。

filename is C:\Users\Abhishek\Desktop\Eclipse\try\i1.jpg
imag is empty
Exception in thread "main" java.lang.IllegalArgumentException: image == null!
at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(ImageTypeSpecifier.java:925)
at javax.imageio.ImageIO.getWriter(ImageIO.java:1591)
at javax.imageio.ImageIO.write(ImageIO.java:1520)
at TempConvert.convert(TempConvert.java:32)
at TempConvert.main(TempConvert.java:60)

请告诉我“imag”对象为空的原因可能是什么,以及我应该怎样做才能完美运行我的代码。提前致谢。

最佳答案

你说你知道data包含JPEG数据,并且你想输出JPEG数据。然后用以下代码替换您的代码,速度会快得多,并且会产生更好的质量:

public void convert(String fileName , byte[] data) throws IOException {   
File myFile = new File(fileName);
System.out.println("filename is " + file);
OutputStream out = new FileOutputStream(myFile);
try {
out.write(data); // Just dump the database content to disk
}
finally {
out.close();
}
System.out.println("Image file written successfully");
}

关于java - byte[] 到图像转换 java 中的 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com