在文件系统上保存Base64解码图像

时间:2014-12-16 17:02:14

标签: java spring-mvc base64

我在spring mvc应用程序中将我的图像作为base 64解码字符串。 e.g。

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUUAAAkFCAYAAAD3GsjUAAAgAElEQVR4nOy9eXSb932vqc50fJs2Z+6ZOefeO2dmbm/aSW9ve+MmrZv2Nmmm7TROs7q2Yzl2HNWxtmihZNmSLMd24t=

我正在尝试将其保存为png图像:

byte[] imageByte = Base64.decodeBase64(base64encodedImage);    
String directory = "D:\\Image Capture\\sample.png";
FileOutputStream outputStream = new FileOutputStream(directory);            
outputStream.write(imageByte);
outputStream.flush();
outputStream.close();

但它将我的图像保存为

Imaged saved on file system

我无法弄清楚原因。这个编码图像是使用javascript中的canvas.toDataUrl获得的。它完全在浏览器选项卡中打开

1 个答案:

答案 0 :(得分:1)

最后我发现了。

this链接上的答案有帮助。

我收到的编码图片:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUUAAAkFCAYAAAD3GsjUAAAgAElEQVR4nOy9eXSb932vqc50fJs2Z+6ZOefeO2dmbm/aSW9ve+MmrZv2Nmmm7TROs7q2Yzl2HNWxtmihZNmSLMd24t=

编码图像部分在以下短语之后开始:

data:image/png;base64,

我不得不跳过那个字符串然后解码图像。

此外,我从同一个线程中发现额外的字符串不应该阻止我们解码。

在同一论坛中,建议在转换编码图像用户时采用以下方法:

InputStream stream = new ByteArrayInputStream(Base64.decode(image.getBytes(), Base64.DEFAULT));

在同一个帖子中参考@Wand Maker的答案。