2012-09-05 102 views
1

我嘗試使用與示例'How to build a location-based hybrid mobile app with reverse geocoding'中使用的代碼類似的代碼獲取用相機拍攝的圖像的dataUrl時出現問題。我正在用Android 2.3.5測試三星Galaxy S2上的代碼。使用trigger.io獲取用相機拍攝的圖像的dataUrl

我用得到dataUrl的代碼是非常標準的javascript:

var toDataURL = function toDataURL(uri, callback) 
{ 
    forge.logging.log('toDataURL...'); 
    forge.logging.log(uri); 
    var image = document.createElement('img'); 
    image.src = uri; 
    image.onload = function() 
    { 
     forge.logging.log('toDataURL image.onload...'); 

     // create canvas 
     var canvas = document.createElement('canvas'); 
     canvas.id = 'canvas'; 
     canvas.width = image.width; 
     canvas.height = image.height; 

     var context = canvas.getContext('2d'); 

     // draw image to canvas 
     context.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height); 

     // get data url 
     var dataUrl = canvas.toDataURL(); 
     callback(dataUrl); 
     forge.logging.log('...toDataURL image.onload'); 
    }; 
    forge.logging.log('...toDataURL'); 
}; 

的問題是,由canvas.toDataURL返回dataUrl始終是空的(「數據:,」)。作爲參數傳遞的URI被記錄爲:

I /鍛造(18019):FORGE]「內容://io.trigger.forgeb6367d6ee13011e1b9ed12313d1adcbe/file___height=640 &類型=圖像& URI =含量%3A %2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F44%23Intent%3Bend &寬度= 480 &名=圖片」

其由調用返回與參數forge.file.URL:

D/Forge(1 8019):帶有task.params的本地調用「file.URL」:{「uri」:「content:// media/external/images/media/45#Intent; end」,「name」:「Image」,「type 「:」image「,」width「:480,」height「:640}

大概這是與權限有關的事情。我的問題是,我需要做些什麼才能使代碼正常工作?還是有另一種方法來獲取相機拍攝的文件內容? (我的目標是將照片的內容發送到網絡服務。)

回答

2

我會仔細看看代碼,嘗試在這裏重新創建 - 感謝代碼段 - 但在此期間可能會有一個簡單的解決方案。

如果您只需將圖像顯示給用戶,然後將其上傳到Web服務,則可以使用file.getImage,file.URL和request.ajax。從代碼herehere拼湊起來:

forge.file.getImage({width: 300, height: 300}, function (file) { 
    // Get a URL to the returned file object which can be used from the local webview. 
    forge.file.URL(file, function (url) { 
    document.getElementById('img').src = url; 
    }); 
    forge.request.ajax({ 
    url: "http://example.com/file_upload", 
    files: [file] 
    }); 
}); 

會爲你工作?

+0

好的,謝謝我會嘗試 - 它看起來應該是好的。儘管擁有dataUrl的靈活性會很好,希望有一些方法可以使它工作! –

+0

我已經完成了一些測試,儘管代碼正常工作 - 文件被正確發送到服務器 - 文件以其原始分辨率上傳,而不是由調用getImage指定的分辨率(480x640)。似乎以這種方式爲來自相冊的圖像和圖像提供圖像。這是正常的嗎?謝謝。 –

相關問題