0

这很奇怪。我尝试使用 HTML5 FileReader.readAsDataURL() 函数和内联图像来获取图像以在 div 中预览它。这适用于大多数浏览器,包括。iPhone的Safari。但是,如果我在三星 Nexus 上使用标准的 Android 浏览器并选择存储在手机上的照片,我总是得到 10810 像素的宽度和 4286 像素的高度,无论源图像的大小如何,当我使用图片时直接通过拍摄新照片就可以了。我得到正确的尺寸。:@ 我使用 jQUery 和本机 javascript 尝试了 naturalWitdh、宽度。所有结果都相同

 $('#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');
    }
});
4

2 回答 2

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/在您的设备/模拟器上对其进行测试。

于 2014-01-10T12:14:38.723 回答
0

您是否尝试过将 chrome 连接到计算机的 chrome 以查看图像和/或 div 是否在做任何时髦的事情?

于 2013-08-08T11:40:49.657 回答