图片裁剪自适应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片裁剪自适应相关的知识,希望对你有一定的参考价值。

最近真是冷,才恍然早已是冬天,冻的手都僵了。

最近项目中图片需要统一固定宽高,但后台上传的各个图片比例并不是都一样的,直接把图片设置宽高会导致图片变形。

所以需要对图片进行处理,图片直接放在容器中默认的宽度低于容器的宽度,需要把图片高度设成容器高度,然后图片水平居中显示,反之垂直居中。

话不多说直接上代码,比较简单也就不详细讲解了,写成一个通用函数了可以拿过去直接使用。

function resizeImg(imgClassName,imgWidth,imgHeight){
        var imgs = document.getElementsByClassName(imgClassName);
        var i=0,img,parentDiv,newWidth,minusPx;
        for(;i < imgs.length;i++){
            img = imgs[i];
            img.style.position = ‘absolute‘;
            parentDiv = img.parentNode;
            parentDiv.style.width = imgWidth + ‘px‘;
            parentDiv.style.height = imgHeight + ‘px‘;
            parentDiv.style.position = ‘relative‘;
            parentDiv.style.overflow = ‘hidden‘;
            if(img.height / img.width < imgHeight/imgWidth){
                newWidth = imgHeight/img.height*img.width;
                minusPx = (newWidth - imgWidth)/2;
                img.style.width = newWidth + ‘px‘;
                img.style.height = imgHeight + ‘px‘;
                img.style.clip = ‘rect(0,‘ + (newWidth - minusPx) + ‘px,‘ + imgHeight + ‘px,‘+minusPx+‘px)‘;
                img.style.marginLeft = ‘-‘+ minusPx + ‘px‘;
            }else if(img.height / img.width > imgHeight/imgWidth){
                minusPx = (img.height - imgHeight)/2;
                img.style.clip = ‘rect(‘+ minusPx +‘px,‘ + imgWidth + ‘px,‘ + (img.height - minusPx) + ‘px,0)‘;
                img.style.marginTop = ‘-‘+ minusPx + ‘px‘;
            }
        }
    }
};

如果你觉得这篇随笔对你有帮助可以支付宝(左)或微信(右)打赏小毅喝杯咖啡 ^_^


技术分享技术分享

 

 

以上是关于图片裁剪自适应的主要内容,如果未能解决你的问题,请参考以下文章

Web实现图片自适应,多余部分裁剪(类小程序 mode=“aspectFill“)

图片宽高自适应,居中裁剪不失真

如何用CSS使图片自适应显示宽度

OpenCV自适应直方图均衡CLAHE的裁剪处理过程

ps怎么按比例裁剪图片

iOS小技能:UICollectionView的自适应案例详解:(商品详情页)文中包含完整demo源码