我在尝试使用与示例“如何使用反向地理编码构建基于位置的混合移动应用程序”中使用的代码类似的代码获取使用相机拍摄的图像的 dataUrl 时遇到问题。我正在使用 Android 2.3.5 的三星 Galaxy S2 上测试代码。
我用来获取 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总是空的('data:,')。作为参数传递的 uri 记录为:
I/Forge (18019): [FORGE] 'content://io.trigger.forgeb6367d6ee13011e1b9ed12313d1adcbe/file___height=640&type=image&uri=content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F44%23Intent%3Bend&width=480&name=Image '
这是从调用 forge.file.URL 返回的,带有参数:
D/Forge (18019):本地调用“file.URL”,带有 task.params:{“uri”:“content://media/external/images/media/45#Intent;end”,“name”:“Image ","type":"image","width":480,"height":640}
大概这与权限有关。我的问题是,我必须做什么才能使代码正常工作?或者是否有其他方法可以获取用相机拍摄的文件内容?(我的目标是将照片的内容发送到网络服务。)