【发布时间】:2012-09-06 11:28:33
【问题描述】:
更新:
出于测试目的,我使用了
<input type="text" onClick="doProcess(http://www.abc.com/chart.png)" />
这不起作用(使用alert 测试是否通过了 url。警告框确实显示了 url,但解码失败)。从某种意义上说,我自己回答了部分问题。关于如何通过 javascript 读取图像文件的任何想法?tt
刚刚发现这是HTML 5相关的代码。我还想,因为我传递的是 url 而不是文件列表,所以我需要从 doProcess() 函数中删除 for() 循环,这将是
function doProcess(f)
{
var o=[];
var reader = new FileReader();
reader.onload = (function(theFile) {
return function(e) {
gCtx.clearRect(0, 0, gCanvas.width, gCanvas.height);
qrcode.decode(e.target.result);
};
})(f);
reader.readAsDataURL(f);
}
但这也不起作用:(
原帖
我有一个提供 QR 图像文件的输入文件。
<input type="file" onchange="doProcess(this.files)">
doProcess 函数
function doProcess(f)
{
var o=[];
for(var i =0;i<f.length;i++)
{
var reader = new FileReader();
reader.onload = (function(theFile) {
return function(e) {
gCtx.clearRect(0, 0, gCanvas.width, gCanvas.height);
qrcode.decode(e.target.result);
};
})(f[i]);
reader.readAsDataURL(f[i]);
}
}
此功能完美运行。那里没有问题。此函数的目的是解码 QR 图像。现在出于纯粹的兴趣和好奇心,我打算做一些不同的事情 - 不再需要手动浏览图像文件。这给我带来了一些疑问:
doProcess(f)在提供图像 URL 而不是文件时是否可以执行相同的操作?目前f参数是一个文件。如果f参数是 URL(例如:doProcess(http://www.abc.com/abc.jpg))会发生什么?我意识到doProcess()内部还有其他支持函数也被调用以完成解码过程,但我假设这些函数将根据通过doProcess传递的数据类型进行操作。如果
f参数是图像文件(在本地计算机上浏览并选择)而不是图像 URL,f将是什么数据类型?我猜这将是一个数组或某种原始二进制形式。
我的目的是研究这个过程并了解幕后究竟发生了什么。使用“浏览”功能,二维码图片解码成功。
总之,如果我将图像的位置作为参数而不是文件传递会发生什么?
提前致谢。
【问题讨论】:
标签: javascript image file url upload