我嘗試使用與示例'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}
大概這是與權限有關的事情。我的問題是,我需要做些什麼才能使代碼正常工作?還是有另一種方法來獲取相機拍攝的文件內容? (我的目標是將照片的內容發送到網絡服務。)
好的,謝謝我會嘗試 - 它看起來應該是好的。儘管擁有dataUrl的靈活性會很好,希望有一些方法可以使它工作! –
我已經完成了一些測試,儘管代碼正常工作 - 文件被正確發送到服務器 - 文件以其原始分辨率上傳,而不是由調用getImage指定的分辨率(480x640)。似乎以這種方式爲來自相冊的圖像和圖像提供圖像。這是正常的嗎?謝謝。 –