最佳答案
我发现很多人都有类似的问题,但是我还没有找到我想要的。
因此,我有一个方法,它读取一个输入图像并将其转换为一个字节数组:
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
WritableRaster raster = bufferedImage .getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
我现在要做的是将它转换回 BufferedImage (我有一个需要这个功能的应用程序)。注意,“ test”是字节数组。
BufferedImage img = ImageIO.read(new ByteArrayInputStream(test));
File outputfile = new File("src/image.jpg");
ImageIO.write(img,"jpg",outputfile);
但是,这将返回以下异常:
Exception in thread "main" java.lang.IllegalArgumentException: im == null!
这是因为 BufferedImage img 为空。我认为这与我最初从 BufferedImage 到字节数组的转换有关,信息被更改/丢失,因此数据不能再被识别为 jpg。
有人对如何解决这个问题有什么建议吗? 我们将不胜感激。