使用trigger.io获取相机拍摄的图像的数据URL
我在使用与示例中使用的代码类似的代码获取相机拍摄的图像的dataUrl时遇到问题。我正在用Android 2.3.5在三星Galaxy S2上测试代码 我用来获取dataUrl的代码是相当标准的javascript:使用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
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]
});
});