将数据 URL 转换为缓冲图像
2022-09-02 20:08:30
我有一个来自图像文件的数据URL,必须将其传递给另一个函数。沿着从 Data-URL 到 BufferedImage 的路径,它需要是一个 byteArray。
我的方法如下:
String dataUrl;
byte[] imageData = dataUrl.getBytes();
// pass the byteArray along the path
// create BufferedImage from byteArray
BufferedImage inputImage = ImageIO.read(new ByteArrayInputStream(imageData));
// If the picture is null, then throw an unsupported image exception.
if (inputImage == null) {
throw new UnknownImageFormatException();
}
问题是,它总是抛出 UnknownImageFormatException Exception,这意味着 inputImage 为 null,这意味着 ImageIO.read 无法识别图像类型。
我使用ImageIO.getReaderFormatNames()来获取支持的文件名,并获得了以下列表:
Supported Formats:
jpg, BMP, bmp, JPG, jpeg, wbmp, png, JPEG, PNG, WBMP, GIF, gif
我尝试传递的数据 URL 如下所示:或data:image/png;base64,...
data:image/jpg;base64,...
据我所知,这些都在支持的文件列表中,因此应该得到认可。
在这种情况下,还有什么可能导致输入图像为空?更有趣的是,我该如何解决它?