【发布时间】:2013-08-24 17:42:33
【问题描述】:
我的 xhtml 中有一个画布元素。我通过toDataUrl() 调用将其转换为名为dataUrl 的base-64 编码String。这会产生以下输出,为清楚起见截断:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzQAAAImCAYAAACFG89TAAAgAElEQVR4Xu29C7x/5Zj3 [lots of characters...]"
我想将此图像发送到我的 MySQL 数据库。我的实体中有一个 Blob (@Lob) 字段,为了将此字符串转换为字节数组,请使用 dataUrl.getData() 并使用此字节数组更新我的实体。
在我的 MySQL 数据库中,BLOB 已成功创建。但是,当我右键单击它并单击在编辑器中打开文件时,我看到字节选项卡很好,但是当我单击图像选项卡时收到一般错误,表明字节以某种方式损坏。
这意味着当我想读取这个文件时,使用BufferedImage imag = ImageIO.read(is); 其中is 是一个带有字节数组作为参数的ByteArrayInputStream,imag 返回 null,更具体地说,read 中的方法BufferedImage类。
编辑:看截图,第一个是dataUrl.getBytes()调用,第二个是MySQL输出。
【问题讨论】:
-
那么您在字节选项卡中看到了哪些值?你从
dataUrl.getData()得到了什么字节?请在每种情况下使用(比如说)前 16 个字节来编辑您的问题。 -
用这个信息更新了我的问题。
-
第一个屏幕截图实际上并没有显示任何数据,是吗?请展开第一行。
-
展开行和单击 [...] 均显示空白输出。
-
这很奇怪,因为您显然正在设法存储数据。请参阅我的答案以了解您正在存储的内容...
标签: java canvas inputstream java-2d bytearrayinputstream