我正在使用一个名为wPaint的 jQuery 插件来允许用户绘制自己的图像。我将生成的图像作为字符串发送到服务器作为开头的字符串
数据:图像/png;base64,
我尝试了以下两种方法,但这两种方法我都无法存储图像。
方法一
String imageData = parameterParser.getStringParameter("image", "");
byte[] imgByteArray = Base64.decodeBase64(imageData.getBytes());
FileOutputStream fileOutputStream = new FileOutputStream("/home/arvind/Desktop/test.png");
fileOutputStream.write(imgByteArray);
fileOutputStream.close();
在这种情况下,文件被写入但不显示图像。但是,当我删除文件扩展名时,我得到了发送到服务器的字符串(即 imageData 中的任何内容)。
方法二
String imageData = parameterParser.getStringParameter("image", "");
byte[] imgByteArray = Base64.decodeBase64(imageData.getBytes());
InputStream in = new ByteArrayInputStream(imgByteArray);
BufferedImage bImageFromConvert = ImageIO.read(in);
ImageIO.write(bImageFromConvert, "png", new File("/home/arvind/Desktop/test.png"));
BufferedImage bImageFromConvert 为空,因此在创建文件时出现异常 (IllegalArgumentException)。
Base64 类来自 apache commons 编解码器库,版本为 1.2。
有什么我做错了吗?