0

CordovaカメラAPIを介してiosデバイスでカメラ画像を取得し、localforage. Resourcesただし、タグの下のブロブをクリックするとエラーがSafari Web Inspector表示され、画像が写真ではなく白い背景An error occured while trying to load resourcesとしてレンダリングされるため、リソースが読み込まれていないようです。20x20これが私のHTMLラッパーCordova Camera APIです:

<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">&nbsp;</div>
  </body>
</html>

savePhotoカメラから取得した画像を保存するために使用します ( js/camera.js)。blobのようなものを出力するコンソールログblob:null/916d1852-c8c5-4b3b-ac8c-86b6c71d0e86

ここで画像のレンダリングで何が間違っているかについてのポインタをいただければ幸いです。

4

1 に答える 1

0

「Promise」スタイルの API に切り替えることで修正されました。どういうわけか、非同期コールバック API バージョンでは機能しません。以下の 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);});
}
于 2016-08-28T01:47:27.460 に答える