2013-08-08 2 views
0

Это странно. Я попытался забрать изображение, чтобы просмотреть его в div, используя функцию HTML5 FileReader.readAsDataURL() и встроенное изображение. Это отлично работает в большинстве браузеров, в т.ч. iPhone Safari. Но если я использую стандартный Android-браузер на Samsung Nexus И выбираю фотографию, которая хранится на телефоне, я получаю ширину 10810 пикселей и высоту 4286 пикселей независимо от того, какой размер имеет исходное изображение, когда я использую картинка непосредственно, снимая новую фотографию, она работает. Я получаю правильные размеры. : @ Я попробовал naturalWitdh, ширину, используя jQuery и собственный javascript. Все с теми же результатамиВ Android Browser всегда получается ширина изображения 10810 с jQuery и FileReader

$('#file-input').change(function() { 
    if (window.File && window.FileReader && window.FileList && window.Blob) { 
     var files = this.files ? this.files : this.currentTarget.files; 
     if (files && files[0]) { 
      var reader = new FileReader(); 
      reader.onload = function (e) { 
      $('#picture') 
       .attr('src', e.target.result).attr('style', '') 
       .load(function() { 
        console.log('w:' + $(this).width()); 
       }); 
      }; 
      reader.readAsDataURL(files[0]); 
     } 
    } else { 
     alert('an error message'); 
    } 
}); 

ответ

0

Вы пробовали закреплять хром до хрома вашего компьютера, чтобы увидеть, если изображение и или дивы делают что-то в стиле фанк?

+0

Да, они делают это действительно фанки. он работает на том же устройстве, используя Chrome-браузер – ralusnom

0

У меня была такая же проблема и у вас есть решение для Android (браузер) 4.0 и выше.

я обнаружил, что он работает правильно, если вы используете функцию createObjectURL, чтобы сделать что-то вроде следующего:

function getImgSize(input) { 

    if (input.files && input.files[0]) { 
     var apiURL = (window.createObjectURL && window) 
         || (window.URL && URL.revokeObjectURL && URL) 
         || (window.webkitURL && webkitURL); 

     var url = apiURL.createObjectURL(input.files[0]); 

     $('#testImg').attr('src', url); 
    } 
} 

$('#testImg').on('load',function(){ 
       alert($(this).width()+'*'+$(this).height()); 
      }); 

$("input").change(function(){ 
    getImgSize(this); 
}); 

См http://jsfiddle.net/bravoman/qm2C5/5/ для полного примера и использовать http://jsfiddle.net/bravoman/qm2C5/5/embedded/result/, чтобы проверить его на устройстве/эмуляторе.