基于JQuery实现的图片自动进行缩放和裁剪处理


Posted in Javascript onJanuary 31, 2014

其实很早就想写一个这样的效果,至于原因?进来这个笔记,我相信你懂的。
一般门户网站,缺少不了大量的图片展示,而为了网站美观,图片又有各种不同尺寸,专业的网站编辑人员,会把图片处理成等比例的图片再上传,把网站弄得很好看,可惜,我想说,我遇到90%的网站编辑人员都是不专业的。
为了不让网站编辑人员毁掉我的心血,我决定做这样一个事情。

1、首先,在CSS里对图片定义好大小,如果JS不执行,就能看到拉伸的图片,也就是最正常的表现;
2、对每个定义图片大小的CSS多定义一个不常用的容器,这里我选用了斜体标签<cite></cite>,并定义其CSS与同根img的CSS一模一样,并定义该容器里的img的CSS样式回归margin:0;padding:0;
我是这样做的:

/*公用*/
cite{display:block;overflow:hidden;overflow:hidden !important;}/*某容器*/
#BigPic img{display:block;padding:2px;width:240px;height:160px;border:1px solid #cccccc;}
#BigPic cite{display:block;padding:2px;width:240px;height:160px;border:1px solid #cccccc;}
#BigPic cite img{display:block;margin:0px;padding:0px;border:none;}

3、定义图片处理函数,参考图片被定义的大小和原始大小,在保持比例的前提下填充满位置,再装进裁剪容器;
我的代码:

//图片尺寸判断与处理,用裁剪容器包围 - By COoL
function cutImgz(obj){
    var image=new Image();
    image.src=obj.src;    $this=$(obj);
    var iwidth=$this.width();//获取在CSS里固定的图片显示宽度
    var iheight=$this.height();//获取在CSS里固定的图片显示高度
    if(1*image.width*iheight!=1*iwidth*image.height){
        //原始图片的尺寸与CSS里固定的图片尺寸比例不一致,则进行处理
        if(image.width/image.height>=iwidth/iheight){
            $this.height(iheight+'px');
            $this.width((image.width*iheight)/image.height+'px');
        }
        else{
            $this.width(iwidth+'px');
            $this.height((image.height*iwidth)/image.width+'px');
        }
        //用cite装起来,做出裁剪效果
        $this.wrap('<cite />');
    }
}

4、在加载页面时遍历所有图片,判断其是否在缓存中,在缓存中则直接进行处理,不在缓存中则通过onload触发处理;
因为在缓存的图片秒load,在定义onload事件之前就已经load好,导致onload事件不被触发;而不在缓存的图片,若直接处理,图片未load出来,原始尺寸会被Image对象认为是空图,width和height都是0
我的代码:

$('img').each(function(){
    var image=new Image();
    image.src=this.src;
    if(image.complete){
        //存在缓存中,立即处理
        cutImgz(this);
    } else{
        //不存在缓存中,onload处理
        this.onload=function(){
            cutImgz(this);
        }
    }
});
Javascript 相关文章推荐
JS打开层/关闭层/移动层动画效果的实例代码
May 11 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
Apr 23 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
May 25 Javascript
浅析AngularJS Filter用法
Dec 28 Javascript
jquery实现列表上下移动功能
Feb 25 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
Oct 13 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
Mar 17 Javascript
JS返回顶部实例代码
Aug 09 Javascript
Vue render深入开发讲解
Apr 13 Javascript
webpack中如何加载静态文件的方法步骤
May 18 Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 Javascript
jquery为页面增加快捷键示例
Jan 31 #Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 #Javascript
jquery 页面滚动到底部自动加载插件集合
Jan 31 #Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
Jan 31 #Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
Jan 31 #Javascript
js实现俄罗斯方块小游戏分享
Jan 31 #Javascript
获取select元素被选中的文本内容的js代码
Jan 29 #Javascript
You might like
火车头采集器3.0采集图文教程
2007/03/17 PHP
PHP 文件上传全攻略
2010/04/28 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
Smarty模板配置实例简析
2019/07/20 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
vuex入门最详细整理
2020/03/04 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
python的几种开发工具介绍
2007/03/07 Python
Python模块WSGI使用详解
2018/02/02 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
Python最小二乘法矩阵
2019/01/02 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
简单的JAVA编程面试题
2013/03/19 面试题
本科毕业生自我鉴定
2013/11/02 职场文书
大学毕业生简单自荐信
2013/11/05 职场文书
纪检监察建议书
2014/05/19 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
2014年大学生工作总结
2014/11/20 职场文书