2015-06-29 2 views
0

Я хочу создать функцию javascript, которая будет загружать случайное изображение при вызове функции da_image. Я хочу, чтобы изображение загружалось на холст, который я установил. Есть явная ошибка в моем коде? В настоящее время ничего не отображается.Javascript загружает случайное изображение

var images = [ 
        "http://circlesfordialogue.com/wp-content/uploads/2014/12/LAURA-LET%C2%B4S-CIRCLE-UP-2014-12-08.jpg", 
        "http://mathworld.wolfram.com/images/eps-gif/ConcentricCircles_1000.gif", 
        "http://www.charlespetzold.com/blog/2012/12/BezierCircleFigure3.png" 

      ]; 
      function da_image(){ 
       var file = images[0]; 
       var reader = new FileReader(); 
       reader.onload = function(){ 
         var img = new Image(); 
         img.src = reader.result; 
         img.onerror = function(){ 
          reset_canvas(); 
          o.font = '30px sans-serif' 
          o.fillText('Error: Invalid Image ' + file.name, 50, 100); 
         } 
         img.onload = function(){ 
          document.getElementById("text").innerHTML = 'Recognizing Text... This may take a while...' 
          reset_canvas(); 
          var rat = Math.min(c.width/img.width, c.height/img.height); 
          o.drawImage(img, 0, 0, img.width * rat, img.height * rat) 
          var tmp = document.createElement('canvas') 
          tmp.width = img.width; 
          tmp.height = img.height; 
          var ctx = tmp.getContext('2d') 
          ctx.drawImage(img, 0, 0) 
          var image_data = ctx.getImageData(0, 0, tmp.width, tmp.height); 
          runOCR(image_data, true) 
         } 

        } 
+0

Итак, для чего нужен FileReader, вы никогда не читаете файл, поэтому обратный вызов 'onload' никогда не срабатывает. – adeneo

+0

Ой, подождите, вы на самом деле читаете URL-адрес перекрестного домена как файл внутри обработчика onload. Это не сработает, прежде всего, есть одна и та же политика происхождения, а во-вторых, вам совсем не нужно читать изображение, и чтение внутри обработчика onload не будет работать, просто нарисуйте его на холсте, но вы выиграли Невозможно изменить изображение, опять же, с той же политикой происхождения. – adeneo

+0

И есть неопределенная переменная 'c', этот код просто копируется/вставляется? – adeneo

ответ

0

Обработчик onload запускается при загрузке изображения. Когда изображение уже загружено при установке обработчика onload, оно не запускается.

Так что всегда устанавливайте атрибут .src после того, как вы установите функцию .onload.

Смежные вопросы