Top Down Contact Closed
Home > hacks > TimThumb应用进阶

TimThumb应用进阶

2009/11/02 Add No comments |

任何程序的应用,我们都希望其能发挥最大的效能,以及能够应用的更加灵活有创见性,而不是仅仅墨守成规。

TimThumb在创建缩略图上的高效简洁和功能之强大是毋庸质疑的,但是默认情况下对图片进行裁切是从中央区域进行裁切的。也许这样的裁切效果并不理想,甚至直接裁切掉了图片的主题部分(很显然,并不是所有的图片重心都在中心区域),那么这样的缩略图不但起不到应有的作用,甚至影响到整个页面的美观性!

今天就简单地对TimThumb进行一下改造,用以解决这种弊端,进而有目的性地生成缩略图。

欲实现以上的功能,我们为TimThumb添加一个定义为“cropfrom”的功能,并为其赋予以下值:

1. middle,

2. middleleft,

3. middleright,

4. topleft,

5. topright,

6. topcenter,

7. bottomleft,

8. bottomright,

9. bottomcenter,

具体添加方法如下:

  1. 下载TimThumb.php最新版本,用编辑器打开

    在59行找到以下代码:

    $quality         = preg_replace("/[^0-9]+/", "", get_request("q", 80));

    $filters        = get_request("f", "");

    在它的后面追加一行代码:

    $crop_from = get_request( 'cropfrom', 'middle' ) ;

    在160行找到:

    imagecopyresampled( $canvas, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

    替换为:

    // Crop position START

    if($crop_from =="middle" )

    // crop from center

    { imagecopyresampled( $canvas, $image, 0, 0, $src_x, $src_y, $new_width, $new_height, $src_w, $src_h ); }

    // crop from middle left

    elseif ($crop_from =="middleleft" )

    // crop from middle right

    { imagecopyresampled( $canvas, $image, 0, 0, 0, $src_y, $new_width, $new_height, $src_w, $src_h ); }

    elseif ($crop_from ==”middleright” )

    // crop from top center

    { imagecopyresampled( $canvas, $image, 0, 0, 2*$src_x, $src_y, $new_width, $new_height, $src_w, $src_h ); }

    elseif ($crop_from =="topcenter" )

    // crop from top center

    { imagecopyresampled( $canvas, $image, 0, 0, $src_x, 0, $new_width, $new_height, $src_w, $src_h ); }

    elseif ($crop_from =="topleft" )

    // crop from top left

    { imagecopyresampled( $canvas, $image, 0, 0, 0, 0, $new_width, $new_height, $src_w, $src_h ); }

    elseif ($crop_from =="topright" )

    // crop from top center

    { imagecopyresampled( $canvas, $image, 0, 0, 2*$src_x, 0, $new_width, $new_height, $src_w, $src_h ); }

    elseif ($crop_from =="bottomcenter" )

    // crop from bottom center

    { imagecopyresampled( $canvas, $image, 0, 0, $src_x, 2*$src_y, $new_width, $new_height, $src_w, $src_h ); }

    elseif ($crop_from =="bottomleft" )

    // crop from bottom left

    { imagecopyresampled( $canvas, $image, 0, 0, 0, 2*$src_y, $new_width, $new_height, $src_w, $src_h ); }

    elseif ($crop_from =="bottomright" )

    // crop from bottom center

    { imagecopyresampled( $canvas, $image, 0, 0, 2*$src_x, 2*$src_y, $new_width, $new_height, $src_w, $src_h ); }

    elseif  (!$crop_from)

    // no data

    { imagecopyresampled( $canvas, $image, 0, 0, $src_x, $src_y, $new_width, $new_height, $src_w, $src_h ); }

    // Crop position END

    如果你不需要这么多功能,你可以删除与其对应的代码。

  2. 如何使用

    使用很简单,只需要在默认调用的方法上追加&cropfrom=[position],以下是示例:

    src=/images/whatever.jpg&h=150&w=150&zc=1&cropfrom=topleft

    如果你还不清楚TimThumb的基本使用,我建议你阅读《TimThumb及其在wordpress中的应用

OK!关于TimThumb的使用就全部介绍完了,这是我前段时间在鼓捣图片主题过程中的一些心得,记录下来希望对想使用它的童鞋们有些帮助!

Ad spot

声明:城市@后版权所有,未经授权请勿转载本博客日志到任何博客或论坛!

如果你喜欢我的文章,欢迎订阅。Google Reader | 鲜果 | 抓虾 | 九点 | QQ邮箱 | 有道 | 更多

Posted by: Gil | Categories: hacks | Tags: , , | Read: 368 views
  1. No comments yet.
  1. No trackbacks yet.