【发布时间】:2013-09-26 00:31:31
【问题描述】:
以为我有这个,但没有。目标:拍一张照片(保险卡),将其保存在本地,稍后再检索。
// Get a reference to the image element
var elephant = document.getElementById("SnapIt_mobileimage_5");
var imgCanvas = document.createElement("canvas"),
imgContext = imgCanvas.getContext("2d");
// Make sure canvas is as big as the picture
imgCanvas.width = elephant.width;
imgCanvas.height = elephant.height;
// Draw image into canvas element
imgContext.drawImage(elephant, 0, 0, elephant.width, elephant.height );
console.log( 'Did that' );
// Get canvas contents as a data URL
var imgAsDataURL = imgCanvas.toDataURL("data:image/jpg;base64,");
// Save image into localStorage
try {
localStorage.setItem("elephant", imgAsDataURL);
}
catch (e) {
console.log("Storage failed: " + e);
};
//Did it work?
var pic = localStorage.getItem("elephant");
console.log( elephant );
console.log( pic );
每一步成功,最终输出为:
<img id="SnapIt_mobileimage_5" class=" SnapIt_mobileimage_5" name="mobileimage_5" dsid="mobileimage_5" src="files/views/assets/image/IMG_0590.JPG">
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA
在新页面上,当我询问时
var policy_shot = localStorage.getItem( 'elephant' );
console.log( policy_shot );
$('#TestScreen_mobileimage_1').src = policy_shot ;
它记录二进制文件:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUg ....
但是图片没有出现。
- 有没有更简单的方法?
- 为什么getItem(二进制)前面是data:image/png;而不是 data:image/jpg ?
- 这是它不显示的原因,还是我做错了什么?
【问题讨论】:
-
您绘制的图像是从同一台服务器加载的还是驻留在另一台服务器上?
-
它是用手机相机拍摄的。这是一个移动应用程序。
-
如果您使用本地引用路径浏览器将阻止加载图像。请看我的回答。您可以通过将完整的字符串作为 url 粘贴到新选项卡中并按 Enter 来测试 data-uri。现在您可以检查是否有空图像或是否获得实际图像。
标签: javascript cordova jquery-mobile canvas html5-canvas