首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 获取上传图片的宽高

在JavaScript中获取上传图片的宽度和高度,可以通过多种方式实现。以下是一些常见的方法:

方法一:使用FileReader读取图片文件

代码语言:txt
复制
document.getElementById('fileInput').addEventListener('change', function(event) {
    var file = event.target.files[0];
    if (file) {
        var reader = new FileReader();
        reader.onload = function(e) {
            var img = new Image();
            img.onload = function() {
                console.log('宽度: ' + this.width);
                console.log('高度: ' + this.height);
            };
            img.src = e.target.result;
        };
        reader.readAsDataURL(file);
    }
});

在这个例子中,我们监听文件输入框的change事件,当用户选择图片后,使用FileReader读取图片文件,然后创建一个新的Image对象,并设置其src属性为读取到的图片数据URL。当图片加载完成后,可以通过img.widthimg.height属性获取图片的宽度和高度。

方法二:使用URL.createObjectURL

代码语言:txt
复制
document.getElementById('fileInput').addEventListener('change', function(event) {
    var file = event.target.files[0];
    if (file) {
        var imgURL = URL.createObjectURL(file);
        var img = new Image();
        img.onload = function() {
            console.log('宽度: ' + this.width);
            console.log('高度: ' + this.height);
            URL.revokeObjectURL(imgURL); // 释放内存
        };
        img.src = imgURL;
    }
});

这种方法与方法一类似,但使用了URL.createObjectURL来创建一个指向文件的临时URL,这样可以避免将整个文件读取到内存中。

方法三:使用Canvas

代码语言:txt
复制
document.getElementById('fileInput').addEventListener('change', function(event) {
    var file = event.target.files[0];
    if (file) {
        var reader = new FileReader();
        reader.onload = function(e) {
            var img = new Image();
            img.onload = function() {
                var canvas = document.createElement('canvas');
                canvas.width = this.width;
                canvas.height = this.height;
                var ctx = canvas.getContext('2d');
                ctx.drawImage(this, 0, 0);
                // 如果需要,可以从canvas获取图片数据
                URL.revokeObjectURL(img.src); // 释放内存
            };
            img.src = e.target.result;
        };
        reader.readAsDataURL(file);
    }
});

这种方法通过将图片绘制到canvas元素上,然后可以直接从canvas的宽度和高度属性中获取图片尺寸。

注意事项

  • 在处理大图片时,应该注意内存使用情况,及时释放不再需要的对象URL。
  • 如果图片加载失败(例如文件不是有效的图片格式),应该有错误处理机制。
  • 在实际应用中,可能需要对图片进行压缩或者调整尺寸以适应不同的展示需求。

以上方法适用于现代浏览器,对于旧版浏览器可能需要适当的兼容性处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券