使用trigger.io获取相机拍摄的图像的数据URL

使用trigger.io获取相机拍摄的图像的数据URL,trigger.io,Trigger.io,我在使用与示例中使用的代码类似的代码获取相机拍摄的图像的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 = docume

我在使用与示例中使用的代码类似的代码获取相机拍摄的图像的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):使用task.params:{“uri”进行本机调用“file.URL”:content://media/external/images/media/45#Intent;结束”,“名称”:“图像”,“类型”:“图像”,“宽度”:480,“高度”:640}


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

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

如果您只需要将图像显示给用户,然后将其上载到web服务,那么只需使用file.getImage、file.URL和request.ajax即可。由代码和以下内容拼凑而成:


这对你有用吗?

好的,谢谢。我试试看——看起来应该没问题。如果有dataUrl的灵活性那就太好了,希望有办法让它工作起来!我已经做了一些测试,虽然代码可以正常工作——文件被正确地发送到服务器——但文件是以原始分辨率上传的,而不是调用getImage指定的分辨率(480x640)。对于来自画廊的图像和用相机拍摄的图像,似乎是这样。这正常吗?谢谢
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]
  });
});