1

我在尝试使用与示例“如何使用反向地理编码构建基于位置的混合移动应用程序”中使用的代码类似的代码获取使用相机拍摄的图像的 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}

大概这与权限有关。我的问题是,我必须做什么才能使代码正常工作?或者是否有其他方法可以获取用相机拍摄的文件内容?(我的目标是将照片的内容发送到网络服务。)

4

1 回答 1

2

我将仔细查看代码以尝试在此处重新创建 - 感谢您的代码片段 - 但与此同时可能有一个更简单的解决方案。

如果您需要做的只是向用户显示图像然后将其上传到 Web 服务,您可以使用 file.getImage、file.URL 和 request.ajax。从这里这里的代码拼凑在一起:

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]
  });
});

这对你有用吗?

于 2012-09-05T19:03:55.940 回答