基于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 相关文章推荐
使用SyntaxHighlighter实现HTML高亮显示代码的方法
Feb 04 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 Javascript
js constructor的实际作用分析
Nov 15 Javascript
js select option对象小结
Dec 20 Javascript
jquery+php实现搜索框自动提示
Nov 28 Javascript
在JavaScript中操作时间之setYear()方法的使用
Jun 12 Javascript
jQuery实现的网页竖向菜单效果代码
Aug 26 Javascript
JQuery EasyUI的使用
Feb 24 Javascript
vue 实现剪裁图片并上传服务器功能
Mar 01 Javascript
12个提高JavaScript技能的概念(小结)
May 09 Javascript
JS数组方法reduce的用法实例分析
Mar 03 Javascript
JS可断点续传文件上传实现代码解析
Jul 30 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
openPNE常用方法分享
2011/11/29 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
php实现微信扫码支付
2017/03/26 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
JS获取地址栏参数的小例子
2013/08/23 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
2014/11/19 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
python使用win32com库播放mp3文件的方法
2015/05/30 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
聊聊python中的异常嵌套
2020/09/01 Python
python集合的新增元素方法整理
2020/12/07 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
生产经理的自我评价分享
2013/11/07 职场文书
工作说明书格式
2014/07/29 职场文书
法定代表人身份证明书
2014/09/10 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技