使用trigger.io获取使用相机拍摄的图像的dataUrl

时间:2012-09-05 11:45:28

标签: trigger.io

我在尝试使用与样本'How to build a location-based hybrid mobile app with reverse geocoding'中使用的代码类似的代码获取使用相机拍摄的图像的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&安培;宽度= 480&安培;名称=图片'

,它是通过参数:

调用forge.file.URL返回的
  

D / Forge(18019):使用task.params本地调用“file.URL”:{“uri”:“content:// media / external / images / media / 45#Intent; end”,“name” : “图像”, “类型”: “图像”, “宽度”:480, “高度”:640}

据推测,这与权限有关。我的问题是,我需要做些什么来使代码工作?或者是否有另一种方法来获取相机拍摄的文件内容? (我的目的是将照片的内容发送到网络服务。)

1 个答案:

答案 0 :(得分: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]
  });
});

这会对你有用吗?