2016-04-08 4 views
0

cordova-plugin-cameraを使用してPHOTOLIBRARYからイメージを選択するように求めます。 私はAndroidのcordova-plugin-cameraでFILE_URIを使用してフォトライブラリイメージを表示

を使用して、私はカメラに渡すオプションがあり、それをテストしてい:バック私は、次のURIを取得し、私は成功の呼び出しに続いて

options: { 
       sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
       destinationType: Camera.DestinationType.FILE_URI 
      } 

content://media/external/images/media/14555 

しかし、私

<img src="content://media/external/images/media/14555"/> 

これは動作しないし、表示されません。 Sこのメッセージ

は、リソースの読み込みに失敗しました:サーバーは404 (見つかりません)

の状態で応答し、私はすべてを試みていると私は、画像を表示するために取得することはできません。 実際のファイルにアクセスする必要があるため、もう一度カメラのプラグインでDATA_URLを使用することはできません。

答えて

1

このアプリケーションのコンテキストでは、webviewがuriを解決できなかったため、uriは無関係です。何らかのファイルAPIプラグインを使用してファイルをインポートする必要があり、それが動作するだけです。それが役に立てば幸い。私はコルドバのこの使用してファイルのAPIプラグインを実装している

+0

です。並べ替え私はcordova-plugin-filetransferを使用して写真をappディレクトリにコピーすると、有効なURLを取得できることがわかりました。しかし、これは解決策よりも回避策です。私の解決策は、content:// URI(カメラプラグインから)をwebviewで直接使用できる有効なURLに直接変換する方法です。 –

0

、ここで

は、リンクそれは助けhttps://github.com/wymsee/cordova-imagePicker

<!DOCTYPE html> 
<!-- 
    Licensed to the Apache Software Foundation (ASF) under one 
    or more contributor license agreements. See the NOTICE file 
    distributed with this work for additional information 
    regarding copyright ownership. The ASF licenses this file 
    to you under the Apache License, Version 2.0 (the 
    "License"); you may not use this file except in compliance 
    with the License. You may obtain a copy of the License at 

    http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, 
    software distributed under the License is distributed on an 
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
    KIND, either express or implied. See the License for the 
    specific language governing permissions and limitations 
    under the License. 
--> 
<html> 
    <head> 
     <!-- 
     Customize this policy to fit your own app's needs. For more guidance, see: 
      https://github.com/apache/cordova-plugin-whitelist/blob/master/README.md#content-security-policy 
     Some notes: 
      * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication 
      * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly 
      * Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this: 
       * Enable inline JS: add 'unsafe-inline' to default-src 
     --> 

     <meta name="format-detection" content="telephone=no"> 
     <meta name="msapplication-tap-highlight" content="no"> 
     <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
     <link rel="stylesheet" type="text/css" href="css/index.css"> 
     <title>Hello World</title> 
    </head> 
    <body> 
     <div class="app"> 
      <h1>Apache Cordova</h1> 
      <div id="deviceready" class="blink"> 
       <p class="event listening">Connecting to Device</p> 
       <p class="event received">Device is Ready</p> 
       <button style="width:30%;" onclick="pickImage()">Clean Data</button> 
       <p id="lastPhoto"></p> 
      </div> 
     </div> 
     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="js/index.js"></script> 
     <script type="text/javascript" src="js/jquery.min.js"></script> 
     <script type="text/javascript"> 
      function pickImage(){ 
       var lastPhotoContainer = document.getElementById("lastPhoto"); 
       var doc= document.getElementBy 
       window.imagePicker.getPictures(
       function(results) { 
        console.log(results); 
         for (var i = 0; i < results.length; i++) { 
         var imageUri=results[i]; 
         console.log('Image URI: ' + results[i]); 
         lastPhotoContainer.innerHTML = "<img src='" + imageUri + "' style='width: 75%;' />"; 
         } 
        }, function (error) { 
         console.log('Error: ' + error); 
       } 
      ); 
      } 
     </script> 
    </body> 
</html> 
関連する問題