【发布时间】:2014-03-28 19:30:03
【问题描述】:
我有一个用户绘制的画布。
在我做的 JavaScript 中:
var data = canvas.toDataURL().substr(22);
// snipped code that sets up xhr POST to "d/"
var params = "img=" + encodeURIComponent(data);
xhr.send(params);
我用 substr(22) 去掉 "data:image/png;base64,"
然后在应用引擎中我这样做:
doodle.setProperty("img", new Text(req.getParameter("img")));
所以我将涂鸦实体的 img 属性设置为 canvas.toDataURL().substr(22)
现在,当我想检索图像时,我会这样做:
if (debugimg) {
resp.setContentType("text/plain");
resp.getWriter().print(((Text)groove.getProperty("img")).getValue());
}
else {
resp.setContentType("image/png;base64");
resp.getWriter().print(((Text)groove.getProperty("img")).getValue());
}
但对于我的一生,图像永远不会出现。
这是一个例子。这是我画的,可以保存并用 JavaScript 渲染。
https://yougotadoodle.appspot.com/d.jsp?id=1483002
如果我使用 debugimg,这就是正在保存的内容:
http://yougotadoodle.appspot.com/d?id=1483002&img=true&debugimg=true
但是当我尝试使用 setContentType("image/png;base64") 甚至只是 "image/png" 来提供它时,你会得到一张损坏的图片:
http://yougotadoodle.appspot.com/d?id=1483002&img=true
我尝试了一些不同的方法,包括不使用 substr(22)。有什么想法吗?
我尝试使用 Blob(),所以像这样存储它:
doodle.setProperty("img", new Blob(req.getParameter("img").getBytes()));
并像这样阅读它:
resp.getWriter().print(((Blob)groove.getProperty("img")).getBytes());
但这似乎吐出了这样的东西:
[B@1f11e0f
【问题讨论】:
标签: java javascript image google-app-engine canvas