2014-06-11 80 views
1

問題是如何將從webview寫入的標準base64類型的圖像數據轉換爲外部存儲器上的文件(在我的情況下是jpeg)?將base64編碼的圖像寫入鈦文件

Ti.App.addEventListener('app:save_op', function(d) { //listens events fired from js in webview 

         var base64img = d.url; 
         var imageBlob = Ti.Utils.base64decode(base64img); 


         var imageView = Titanium.UI.createImageView({ 
          image:imageBlob, 
          // top:20, 
          // width:300, 
          // height:100 
         }); 

         self.add(imageView); 


         if (Ti.Filesystem.isExternalStoragePresent()) { 

          // var theMap = win1.toImage(); 
           // var file = Titanium.Filesystem.createTempFile(Titanium.Filesystem.resourcesDirectory); 
           // Ti.API.info('size = ' + file.size); 
           // file.write(theMap); 



          fname = new Date().getTime() + '_' + 'out.jpg'; 
          fname2 = new Date().getTime() + '_' + 'o.jpg'; 

          var f = Ti.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory, fname); 
          var f2 =Ti.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory, fname2); 
          // f2 = f.read(); 
          // f2.write(); 

          f.write(d.url); 
          // 
          //f.write(imageBlob); 

          // var img = new Image(); 
          // img.src = imageBlob; 

          f.write(imageView.image); 
          alert("nativePath = " + f.nativePath); 

我實現了事件偵聽器可以捕捉到在網頁視圖,然後fireevent JPEG文件的base64字符串....但它只是寫他們爲明文的文件,而不是圖像 } 我已經嘗試了很多的一些變體要做到這一點:toImage/BLOB --->緩衝區--->文件/ base64decode.toString ....

回答

1

如果您只是想保存圖像的設備,你可以嘗試:

Titanium.Media.saveToPhotoGallery(imageBlob); 

這是documentation