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

js 图片 高宽

在JavaScript中,处理图片的高宽通常涉及到HTML5的<img>元素以及JavaScript的DOM操作。以下是一些基础概念和相关操作:

基础概念

  1. HTMLImageElement: 在JavaScript中,<img>元素对应的DOM对象是HTMLImageElement,它包含了图片的各种属性,如widthheightnaturalWidthnaturalHeight等。
  2. width 和 height 属性: 这两个属性可以获取或设置图片的显示尺寸(以像素为单位)。设置这两个属性会改变图片在页面上的渲染大小,但不会改变图片的实际文件大小。
  3. naturalWidth 和 naturalHeight 属性: 这两个属性表示图片的原始尺寸,即未调整大小的尺寸。

获取图片高宽

代码语言:txt
复制
var img = new Image();
img.onload = function() {
    console.log('Natural dimensions: ' + this.naturalWidth + ' x ' + this.naturalHeight);
    console.log('Current dimensions: ' + this.width + ' x ' + this.height);
};
img.src = 'path/to/image.jpg';

设置图片高宽

代码语言:txt
复制
var img = document.getElementById('myImage');
img.width = 300;  // 设置显示宽度为300像素
img.height = 200; // 设置显示高度为200像素

应用场景

  • 响应式设计: 根据不同的屏幕尺寸动态调整图片大小。
  • 图片预览: 在用户上传图片前,显示图片的原始尺寸或预览尺寸。
  • 图像处理: 在客户端进行简单的图像处理,如裁剪、缩放等。

常见问题及解决方法

  1. 图片加载延迟: 如果在图片加载完成前尝试获取其尺寸,可能会得到0或未定义的值。解决方法是使用onload事件确保图片加载完成后再获取尺寸。
  2. 图片变形: 如果只设置宽度或高度,可能会导致图片比例失调。解决方法是同时设置宽度和高度,或者使用CSS的object-fit属性来保持图片比例。
  3. 跨域问题: 如果图片来自不同的域,可能会因为浏览器的同源策略而无法获取其尺寸信息。解决方法是确保图片服务器设置了正确的CORS头部,允许跨域访问。

示例代码

以下是一个完整的示例,展示如何在图片加载完成后获取并设置其尺寸:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Image Dimensions</title>
</head>
<body>
    <img id="myImage" src="path/to/image.jpg" alt="Sample Image">
    <script>
        var img = document.getElementById('myImage');
        img.onload = function() {
            console.log('Natural dimensions: ' + this.naturalWidth + ' x ' + this.naturalHeight);
            console.log('Current dimensions: ' + this.width + ' x ' + this.height);
            // 设置新的显示尺寸
            this.width = 300;
            this.height = 200;
        };
    </script>
</body>
</html>

通过上述代码,你可以在控制台中看到图片的原始尺寸和设置后的显示尺寸。

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

相关·内容

JS获取图片原始宽高

最近在给博客的相册模块做优化,需要知道图片的原始大小,我以前的做法是把图片的真实宽高分别放在data-width和data-height中,效果是达到了,但是总觉得扩展性很低,当不知道图片的大小时,还要一张一张图片的去查看图片信息手动输入图片大小...,很繁琐 获取图片大小: 1.使用innerWidth,innerHeight 使用HTMLImageElement.innerWidth 是可以拿到图片的宽度 但是需要注意的是这里拿到的宽度是图像在CSS...像素中渲染的宽度 也就是说如果图片原始大小1200,使用css或者width属性设置为600,那么这里拿到的宽度为600,显然用innerWidth获取图片原始尺寸是不靠谱的 2.使用document.createElement...document.createElement("img") img.src = "1.jpg" var width = img.width 动态创建一个imgElement,通过给src赋值,最终来获取img的宽和高..."1.jpg" 3.使用naturalWidth(推荐) 使用HTMLImageElement.naturalWidth拿到图像在CSS像素中固有的宽度,如果可用的话; 否则, 返回0 这样就可以拿到图片的原始大小

6.4K20
  • js图片监听onload事件,依然有获取不到宽高的场景

    背景 在实际开发中,移动端页面遇到的,采用正常写法,图片 src赋值写在 onload 事件监听 后面,依然会有拿不到 图片真实宽高的场景,获得的图片宽高都为0,真的是好坑啊。...img = new Image() // 加载完成执行 img.onload = function(){ console.log(img.width,img.height) } // 改变图片的...为了避免图片加载失败或不存在等长场景导致定时器一直执行,可以加一个兜底,比如10秒钟之后自动清除定时器。...var img = new Image() // 改变图片的src img.src = img_url // 定时执行获取宽高 var check = function(){ // 只要任何一方大于...0 // 表示已经服务器已经返回宽高 if (img.width>0 || img.height>0) { clearInterval(set); } } var

    4K20

    javascript 快速获取图片实际大小的宽高

    javascript 快速获取图片实际大小的宽高 简陋的获取图片实际宽高的方式 // 图片地址 var img_url = '13643608813441.jpg' // 创建对象 var img =...宽高都是0的这个结果很正常,因为图片的相关数据都没有被加载前它的宽高默认就是0,我们需要它加载完所有的相关数据再获取宽和高。...onload加载所有的相关数据后,取宽高 // 图片地址 var img_url = '13643608813441.jpg' // 创建对象 var img = new Image() // 改变图片的...从缓存里读取图片的宽高不用说,非常方便快捷,今天我们要解决的是没有缓存而又快速的相比onload更快的方式去获取图片的宽高。...这是一张2560 * 1600大小的图片,各浏览器执行结果都能看到通过快速获取图片大小的方法几乎都在200毫秒以内,而onload至少五秒以上,这差别之大说明快速获取图片宽高非常实用。

    5.6K10

    js获取屏幕以及元素宽高的方法

    一.window相关 网页正文部分上:window.screenTop 网页正文部分左:window.screenLeft 屏幕分辨率的高:window.screen.height 屏幕分辨率的宽:...document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWidth (包括边线的宽...) 网页可见区域高:document.body.offsetHeight (包括边线的宽) 网页正文全文宽:document.body.scrollWidth 网页正文全文高:document.body.scrollHeight...网页被卷去的高:document.body.scrollTop 网页被卷去的左:document.body.scrollLeft 三.滚动相关 scrollHeight: 获取对象的滚动高度。...height是指可见内容的高 clientWidth = width + padding clientHeight = height + padding offsetWidth = width + padding

    6.9K20

    图片不变形,宽高不超出父元素的情况下旋转图片

    做这样的效果的难点在于,计算没旋转前图片的宽,高和旋转后的宽高。 下面来看具体的实现。 实现步骤 让图片在父元素中水平居中,垂直居中显示。我用的是 flex。...我们知道图片在旋转 (2n * 90)度在父元素的宽高是一样的,((2n + 1) * 90) 度在父元素的宽高是一样的。...所以我们只需要两组宽高。 图片的宽和高要满足 不超出父元素 图片不能变形 在上面的条件下,图片的宽高只有有限的值可以选。...在 旋转 (2n * 90) 度的情况下 图片的宽为父元素的宽,高度自适应 图片的高为父元素的高,宽度自适应 在 旋转((2n + 1) * 90) 度的情况下 图片的宽为父元素的高,高度自适应 图片的高为父元素的宽...旋转后,需要从新设置图片宽高。

    2.1K30

    js 获取屏幕各种宽高的方法(浏览器兼容)

    屏幕的有效宽高: window.screen.availHeight window.screen.availWidth 网页可见区域宽:document.body.clientWidth  网页可见区域高...:document.body.clientHeight  网页可见区域宽:document.body.offsetWidth (包括边线的宽)  网页可见区域高:document.body.offsetHeight...(包括边线的宽)  网页正文全文宽:document.body.scrollWidth  网页正文全文高:document.body.scrollHeight  网页被卷去的高:document.body.scrollTop...  网页被卷去的左:document.body.scrollLeft  网页正文部分上:window.screenTop  网页正文部分左:window.screenLeft  屏幕分辨率的高:window.screen.height...  屏幕分辨率的宽:window.screen.width  屏幕可用工作区高度:window.screen.availHeight  屏幕可用工作区宽度:window.screen.availWidth

    3.6K100
    领券