Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过传递URL,通过javascript读取/处理图像-类似于PHP中的文件内容?_Javascript_Image_File_Url_Upload - Fatal编程技术网

通过传递URL,通过javascript读取/处理图像-类似于PHP中的文件内容?

通过传递URL,通过javascript读取/处理图像-类似于PHP中的文件内容?,javascript,image,file,url,upload,Javascript,Image,File,Url,Upload,更新: 出于测试目的,我使用了 <input type="text" onClick="doProcess(http://www.abc.com/chart.png)" /> 但这也不管用:( 原创帖子 我有一个输入文件,其中提供了QR图像文件 <input type="file" onchange="doProcess(this.files)"> 数据处理功能 function doProcess(f) { var o=[]; for(var

更新:

出于测试目的,我使用了

<input type="text" onClick="doProcess(http://www.abc.com/chart.png)" />
但这也不管用:(


原创帖子

我有一个输入文件,其中提供了QR图像文件

<input type="file" onchange="doProcess(this.files)">

数据处理功能

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]); 
    }
}
函数数据处理(f)
{
var o=[];

对于(var i=0;i这里有一些问题我不知道你有没有,因为它不是你的完整代码,我也不知道你到底想做什么。这里是一个非常接近你正在做的事情的工作示例。它将图像加载到画布上(你可以使用你的qrcode内容)


var gCanvas;
var-gCtx;
函数加载(){
控制台日志(“已加载”);
gCanvas=document.getElementById(“mcanvas”);
if(gCanvas.getContext){
gCtx=gCanvas.getContext(“2d”);
}else console.log(“没有画布?”);
}
函数doProcess(f){
var o=[];
var reader=new FileReader();
reader.onload=(函数(文件){
var img=新图像();
img.src=文件;
img.onload=函数(){
gCtx.clearRect(0,0,gCanvas.width,gCanvas.height);
gCtx.drawImage(img,0,0);
}
返回;
})(f) );
控制台日志(读卡器);
reader.readAsDataURL(f);
}

别忘了加载函数,它会让你的javascript在身体加载后运行。

谢谢你的回复。我要做的就是把存储在服务器上的图像url传递给
doProcess()
函数。然后
doProcess
将使用
qrcode.decode(e.target.result)
解码QR图像。这是一个很长的过程,但是有可能知道
e.target.result
在这个上下文中的含义吗?+1 btw让代码在画布上绘制图像。但是我认为
qrcode.decode()
负责图像的绘制。我不知道在这种情况下e.target属性到底是什么,因为
theFile
变量已经有URL字符串,所以您可以直接将其放在qrcode.decode方法上。您要做的一件事是返回一个函数,但不是以与读卡器相同的方式初始化。onlo广告一。试着放:
return(函数(e){gCtx.clearRect(0,0,gCanvas.width,gCanvas.height);qrcode.decode(e.target.result);})(f);
我所做的是使用了你的代码,就在它写着
gCtx.drawImage(img,0,0);
的地方,我用
qrcode.decode.decode(theFile)代替了它;
.Firebug抛出以下错误:
NS\u error\u XPC\u BAD\u CONVERT\u JS:无法转换JavaScript参数arg 0[nsIDOMFileReader.readAsDataURL]
此外,Firebug还说
类型错误:gCanvas未定义
我的错,该错误是由于不在本问题范围内的内容引起的。在我用qrcode.decode函数替换您的一行后,它工作正常。再次感谢!
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]); 
    }
}
<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript">
      var gCanvas;
      var gCtx;
      function load(){
        console.log("loaded");
        gCanvas = document.getElementById("mcanvas");
        if (gCanvas.getContext){
          gCtx = gCanvas.getContext("2d");
        } else console.log("no Canvas?");
      }
      function doProcess(f){
          var o=[];
          var reader = new FileReader();
          reader.onload = (function(theFile) {
              var img = new Image();
              img.src = theFile;
              img.onload = function(){
                gCtx.clearRect(0, 0, gCanvas.width, gCanvas.height);
                gCtx.drawImage(img,0,0);
              }
              return;
          })(f);

          console.log(reader);
          reader.readAsDataURL(f);
      }
    </script>
  </head>

  <body onload="load()">
    <input type="text" onClick="doProcess('https://www.google.com.br/logos/2012/clara_schuman-2012-hp.jpg')" />
    <canvas id="mcanvas" height="500" width="500"></canvas>
  </body>
</html>