jQThumb 图像缩放插件 可以结合Bootstrap使用,使不同分辨率下图像不变形

jQThumb 是一款基于 jQuery 的缩略图插件,它能够很方便的制作指定的尺寸的缩略图。 它支持 IE6 从 jQuery >=v1.3 或  Zepto (with zepto-data plugin) >=v1.1.3。

经测试支持的浏览器:

  1. Google Chrome
  2. Mozilla Firefox
  3. Safari
  4. Internet Explorer 6, 7, 8, 9 and 10
$('img').jqthumb({
   classname: 'jqthumb',          
// 生成缩略图的 div 类名. 默认是 jqthumb
   width: '100%',             
// 剪裁后新图片的宽度. 默认是 100px.
   height: '100%',             
// 剪裁后新图片的高度. 默认是 100px.
   position: {
      x: '50%',                   
// 图片 x 方向的位置. 默认 50%. 50% 的意思是图片横向的中心.
      y: '50%'                    
// 图片 Y 方向的位置. 默认 50%. 50% 的意思是图片纵向的中心.
   },
   source: 'src',              
// 图像资源的属性. 默认 src.
   show: true,              
// TRUE = 处理后立即显示. FALSE = do not show it. DEFAULT IS TRUE.
   responsive: 20,                 
// 只在旧的浏览器中使用. 0 to disable. DEFAULT IS 20
   zoom: 1,                  
// 放大倍数, 2 图片实际大小的2倍. DEFAULT IS 1
   method: 'auto',             
// 3 methods available: "auto", "modern" and "native". DEFAULT IS auto
   before: function (oriImage) { 
// 每张图片开始处理前回调函数.
      alert("I'm about to start processing now...");
   },
   after: function (imgObj) {   
// 当每张图片剪裁后回调函数.
      console.log(imgObj);
   },
   done: function (imgArray) { 
// 所有图片都剪裁后的回调函数
      for (i in imgArray) {
         $(imgArray[i]).fadeIn();
      }
   }
});


参考demo: http://www.bcty365.com/content-55-525-1.html

github :https://github.com/pakcheong/jqthumb


============================================================================================================

首页中我使用了BootStrap的轮播(carousel)插件来展示文章中的图片。在程序中自动抓取文章的第一张图片作为该轮播控件中要显示的图片,由于文章的图片大小不一,而轮播插件的大小基本是固定的,所以展示的时候图片出现了变形。在网上找了很多中方式也没有解决(过程曲折,不再赘述),直到找到了这款Jquery的缩放插件——jqthumb.js.下面来看看如何使用它以及如何利用它来控制轮播控件中图片的大小,而且能够做到不变形,可以显示图片的主要部分(类似于微信朋友圈的图片混排效果——不知道大家有没有注意,在微信朋友圈中无论你发的图片的比率是什么,总能够被完美的排列,而不会发生变形)。首先我们看看Bootstrap的Carousel的html代码:

<div id=”carousel-example-generic”  class=”carousel slide” data-ride=”carousel”>
<!– Wrapper for slides –>
  <div class=”carousel-inner” role=”listbox”>
      <div class=”item active”>
      <a href=”包含图片一文章路径”>
          <img src=”图片一路径” alt=”图片一” onload=”DrawImage(this)”/></a>
          <div class=”carousel-caption”>
              <h4 class=”alpha”>
                  <a style=”color:white;” href=”包含图片一文章路径”>图片一标题</a>
              </h4>
             </div>
</div>
      <div class=”item”>
     <a href=”包含图片二文章路径”>
         <img src=”图片二路径” alt=”图片二” onload=”DrawImage(this)”/>
     </a>
     <div class=”carousel-caption”>
              <h4 class=”alpha”>
                  <a style=”color:white;” href=”包含图片二文章路径”>图片二标题</a>
              </h4>
             </div>
     </div>
     <div class=”item”>
         <a href=”包含图片三文章路径”>
             <img src=”图片三路径” alt=”图片三” onload=”DrawImage(this)”/>
          </a>
          <div class=”carousel-caption”>
              <h4 class=”alpha”>
                  <a style=”color:white;” href=”包含图片三文章路径”>图片三标题</a>
              </h4>
             </div>
     </div>
  </div>

由上述代码可以看到,每个图片(img)在加载(onload)的时候都调用了一个函数DrawImage,在这个函数中我们就可以调用jqthumb.js的方法来控制图片的大小了,注意该函数一定要加在上述HTML代码前,否则第一次加载的时候控制图片大小会失败(因为页面加载时序的原因),函数代码如下:
<!–导入插件–>
<script type=”text/javascript” src=”/static/plugins/thumb/js/jqthumb.js”></script>
<script>
function DrawImage(hotimg)
{
   $(hotimg).jqthumb({
   classname      : ‘jqthumb’,
            width          : ‘100%’,
            height         : ‘300px’,
            position       : { y: ‘50%’, x: ‘50%’},
            zoom           : ‘1’,
            method         : ‘auto’,
   });
}
</script>

在该函数中我们调用了jqthumb方法来定义一个宽度和轮播插件相同高度为300px的原图片的缩略图,该缩略图是由图片的中心开始生成的(注意其position属性的设置),这样即使图片的大小变化了,也可以显示图片的主要内容,而且图片比率可以保持不变。

以上是从网络收集的资料,用过后确实解决了图片再不同分辨率设备下的缩放问题,但是如果加载的图片超出了轮播位的高度,图片将有一瞬间的溢出问题。

故在轮播位的DIV 加入<style=”overflow: hidden;”>.

注: overflow: hidden
overflow 属性规定当内容溢出元素框时发生的事情。这个属性定义溢出元素内容区的内容会如何处理。hidden 表示内容会被修剪,并且剪掉的内容是不可见的。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容