2017-06-23 9 views
0

NativeScriptを初めて使用しています。カメラモジュールでイメージをキャプチャしようとしています(これは問題なく動作します)。動作していません)、サーバーへのPOST。NativeScript 3を使用してイメージをキャプチャしてリモートサーバに送信する方法

私は数日間グーグルで行ってきました。あなたが貸すことができるどんな助けも非常に高く評価されるでしょう。

私はこのことについて160億さまざまな方法を試してみたし、これは私の現在のコードです:

viewModel.takePicture1 = function() { 
    camera.requestPermissions(); 
    var isAvailable = camera.isAvailable(); 
    console.log(isAvailable); 

    var options = { width: 640, keepAspectRatio: true, saveToGallery: false }; 


    camera.takePicture().then(function (img) { 
     try{ 
      var imageData = img.toBase64String("jpeg"); // fails here 
      console.log(imageData); 
     }catch(err){ 
      console.log("Error: "+err); 
     } 

     http.request({ 
      url: "http://[server address]/lab/ns_exp/upload_test.php", 
      method: "POST", 
      headers: { "Content-Type": "application/base64" }, 
      content: imageData 
     }).then(function() { 
      console.log("Upload successful"); 
     }).catch(function(e) { 
      console.log("Unsuccessful upload", e); 
     }); 
    }); 
}// 

ああ、私は明確な私は、角(明らかに)使用していないことを確認したいですので、ドンください。それを行う答えを提供しません。 :)(Vuejs Holdout)

+0

画像ソースを[camera docs](https://docs.nativescript.org/hardware/camera)で書かれた画像に変換し、その画像オブジェクトをbase64stringに変換しようとしましたか? 'var image = new imageModule.Image(); image.src = imageAsset; ' – Zigmas

+0

解決策が見つかりました(https://discourse.nativescript.org/t/tobase64string-doesnt-work/1184/6)。どうやら、toBase64は画像がJPEGで、品質を定義するパラメータが必要であることを知る必要があります。ジグマス、私はあなたの助けを借りて感謝します。私がリンクしている解決策では、あなたの提案がうまくいく必要があります。私はNativeScriptの人がここにいるのは驚いています。 – Jrhd437

+0

解決策を回答として掲示し、同じブロッカーに遭遇する可能性のある他の人に応じてそれをマークしてください。 – pkanev

答えて

0

ここで重要な点は、base64はイメージがJPEGであり、イメージがどのような品質であるべきかを知る必要があることです。

:誰かが私の完全な機能であり、ここで、この後に見つけてobservableArrayに画像(UI)および/または画像(BASE64)を置くことについて疑問に思う念の

camera.takePicture(cameraOptions) 
    .then(imageAsset => { 
     imageSource.fromAsset(imageAsset).then(res => { 
      myImageSource = res; 
      var base64 = myImageSource.toBase64String("jpeg", 100); 

:コードは次のようになります。

viewModel.takePhoto = function(){ 
    var self = this; 
    camera.requestPermissions(); 
    var cameraOptions = { width: 640, keepAspectRatio: true, saveToGallery: false }; 
    camera.takePicture(cameraOptions) 
    .then(imageAsset => { 
     imageSource.fromAsset(imageAsset).then(res => { 
      myImageSource = res; 
      var base64 = myImageSource.toBase64String("jpeg", 100); 

      self.photoData.push({"data": base64}); 

      var image = new imageModule.Image(); 
      image.src = imageAsset; 

      self.photoUI.push({"src": image.src}); 
      listView.refresh(); 
     }) 
    }).catch(function (err) { 
     console.log("Error -> " + err.message); 
    }); 
} 
関連する問題