当前位置: 首页 > 面试题库 >

使用Javascript上传之前检查图像的宽度和高度

蒋泰
2023-03-14
问题内容

我有一个JPS,其中用户可以在其中放置图像:

<div class="photo">
    <div>Photo (max 240x240 and 100 kb):</div>
    <input type="file" name="photo" id="photoInput" onchange="checkPhoto(this)"/>
</div>

我写了这个js:

function checkPhoto(target) {
    if(target.files[0].type.indexOf("image") == -1) {
        document.getElementById("photoLabel").innerHTML = "File not supported";
        return false;
    }
    if(target.files[0].size > 102400) {
        document.getElementById("photoLabel").innerHTML = "Image too big (max 100kb)";
        return false;
    }
    document.getElementById("photoLabel").innerHTML = "";
    return true;
}

可以很好地检查文件类型和大小。现在,我想检查图像的宽度和高度,但是我不能这样做。
我已经尝试过,target.files[0].width但是我得到了undefined。用其他方式我得到0
有什么建议?


问题答案:

该文件只是一个文件,您需要像这样创建一个图像:

var _URL = window.URL || window.webkitURL;
$("#file").change(function (e) {
    var file, img;
    if ((file = this.files[0])) {
        img = new Image();
        var objectUrl = _URL.createObjectURL(file);
        img.onload = function () {
            alert(this.width + " " + this.height);
            _URL.revokeObjectURL(objectUrl);
        };
        img.src = objectUrl;
    }
});

我认为您意识到只有少数浏览器支持此功能。到现在为止,大多数都是Firefox和Chrome,也可以成为歌剧。

PSURL.createObjectURL()方法已从MediaStream接口中删除。该方法已在2013年弃用,并通过将流分配给HTMLMediaElement.srcObject来取代。删除了旧方法,因为它不太安全,需要调用URL.revokeOjbectURL()才能结束流。其他用户代理已弃用(Firefox)或已删除(Safari)此功能。



 类似资料:
  • 问题内容: 在使用jQuery或JavaScript上传到我的网站之前,如何获取文件大小,图像高度和宽度? 问题答案: 使用 HTML5和File API 图片来源将是代表Blob对象的URL 使用FileReader API的 如果您需要图像源作为长Base64编码的数据字符串

  • 问题内容: 在使用jQuery或JavaScript上传到我的网站之前,如何获取文件大小,图像高度和宽度? 问题答案: 使用 HTML5和 File API 使用URL API的示例 图片来源将是代表Blob对象的URL 使用FileReader API的示例 如果您需要图像源作为长Base64编码的数据字符串

  • 如何使用jQuery或JavaScript在上传到我的网站之前获取文件大小、图像高度和宽度?

  • 问题内容: 除了使用ImageIO.read来获取图像的高度和宽度外,还有其他方法吗? 因为我遇到了锁定线程的问题。 此错误仅在Sun应用服务器上发生,因此我怀疑这是Sun错误。 问题答案: 这很简单方便。

  • 问题内容: 我正在创建一个jQuery插件。 如何在Safari中使用Javascript获得真实的图像宽度和高度? 以下适用于Firefox 3,IE7和Opera 9: 但是在Webkit浏览器中,例如Safari和Google Chrome的值为0。 问题答案: Webkit浏览器在加载图像后设置height和width属性。建议不要使用超时,而建议使用图像的onload事件。这是一个简单的

  • 问题内容: 为什么下面的代码返回高度:-1,这意味着高度未知。如何获得图像的高度? 问题答案: 使用ImageIO.read(URL)或ImageIO.read(File)代替。加载时它将阻塞,返回后将知道图像的宽度和高度。 例如 或者,MediaTracker向由异步加载的映像中添加A ,Toolkit然后等待其完全加载。