[英]Error loading image through localforage blob on ios
I am grabbing camera image on an ios device through Cordova camera API and then saving it through localforage
. 我正在通过Cordova相机API在ios设备上捕获相机图像,然后通过
localforage
保存它。 However, it seems that the resource is not being loaded since clicking on the blob under Resources
tag of Safari Web Inspector
shows An error occured while trying to load resources
error, and the image renders as 20x20
white background instead of photo. 但是,似乎没有加载资源,因为单击
Safari Web Inspector
Resources
标签下的blob会显示An error occured while trying to load resources
发生错误错误,并且图像呈现为20x20
白色背景而不是照片。 Here is my HTML wrapper around Cordova Camera API
: 这是我关于
Cordova Camera API
HTML包装器:
<head>
<title>Capture Photo</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="js/camera.js"></script>
<script type="text/javascript" charset="utf-u" src="js/localforage.js"></script>
<script type="text/javascript">
function savePhoto(contents){
localforage.setItem('photo', contents, function(img) {
// This will be a valid blob URI for an <img> tag.
var blob = new Blob([img], { type: "image/jpeg" } );
var imageURI = window.URL.createObjectURL(blob);
console.log(imageURI);
var newImg = document.createElement("img");
newImg.src=imageURI;
// add the newly created element and its content into the DOM
var currentDiv = document.getElementById("div1");
document.body.insertBefore(newImg, currentDiv);
});
console.log(contents.byteLength);
}
function grabPhoto(){
capturePhotoEdit(savePhoto,function(e){console.log(e);});
}
</script>
</head>
<body>
<button onclick="grabPhoto();">Capture Photo</button> <br>
<div id="div1"> </div>
</body>
</html>
We use savePhoto
to save down the image grabbed from the camera (in js/camera.js
). 我们使用
savePhoto
来保存从相机获取的图像(在js/camera.js
)。 Console logging of blob
prints out stuff like blob:null/916d1852-c8c5-4b3b-ac8c-86b6c71d0e86
. blob
控制台日志记录会打印出blob:null/916d1852-c8c5-4b3b-ac8c-86b6c71d0e86
。
I will very much appreciate pointers on what I am doing wrong here with image rendering. 我非常感谢您指出我在图像渲染方面做错的事情。
Fixed now by switching to "Promise" style API. 现在已通过切换为“ Promise”样式的API进行了修复。 Somehow, it doesn't work for async callback API version.
某种程度上,它不适用于异步回调API版本。 Fixed JS code below:
修复了以下JS代码:
function savePhoto(contents){
localforage.setItem('photo', contents).then(function(image) {
// This will be a valid blob URI for an <img> tag.
var blob = new Blob([image],{ type:"image/jpeg" });
console.log('size=' + blob.size);
console.log('type=' + blob.type);
var imageURI = window.URL.createObjectURL(blob);
var newImg = document.createElement("img");
newImg.src=imageURI;
newImg.onload = function() {
URL.revokeObjectURL(imageUrI);
};
var currentDiv = document.getElementById("div1");
document.body.insertBefore(newImg, currentDiv);
}).catch(function(err) {
// This code runs if there were any errors
console.log(err);
});
}
function grabPhoto(){
capturePhotoEdit(savePhoto,function(e){console.log(e);});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.