更新:
出于测试目的,我使用了
<input type="text" onClick="doProcess(http://www.abc.com/chart.png)" />
这不起作用(用于alert
测试是否通过了 url。警告框确实显示了 url,但解码失败)。从某种意义上说,我自己回答了部分问题。关于如何通过 javascript 读取图像文件的任何想法?tt
刚刚发现这是HTML 5相关的代码。我还想,因为我传递的是 url 而不是文件列表,所以我需要for()
从函数中删除循环,doProcess()
这将是
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
是什么?我猜这将是一个数组或某种原始二进制形式。
我的目的是研究这个过程并了解幕后究竟发生了什么。通过使用“浏览”功能,QR 图像被成功解码。
总之,如果我将图像的位置作为参数而不是文件传递会发生什么?
提前致谢。