我看到很多人遇到了类似的问题,但我还没有找到我想要的确切解决办法。
我有一个方法,可以读取一张输入图片并将其转换为字节数组:
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格式。请问有人对如何解决这个问题有任何建议吗?将不胜感激。