bfi_thumb是一款类似于TimThumb的图片处理php脚本,由于timthumb的安全性问题,很多WordPress主题不再使用这个脚本,bfi_thumb是一款很好的替代产品。它通过扩展WordPress Image Editor class来实现各种图片处理效果,相比timthumb更加安全。
目录
概述
该脚本以WordPress Image Editor class为根基,增加了图片动态缩放、裁切、灰度、上色、反相、透明度等功能。可以对任何本地图片进行处理,也可以通过WordPress默认函数调用,如the_post_thumbnail(),直接对WordPress生成的缩略图进行二次处理。
动态生成的图片存储在wp-content/uploads/bfi_thumb目录下,使用如下代码更改目录
@define( BFITHUMB_UPLOAD_DIR, 'other_dir' );
基本用法
首先,引入脚本文件
require_once('BFI_Thumb.php');
将图片尺寸缩小到宽度为400
$params = array( 'width' => 400 ); echo "<img src='" . bfi_thumb( "URL-to-image.jpg", $params ) . "'/>";
bfi_thumb直接返回生成的图片的url。
再看,更改透明度
$params = array( 'opacity' => 80 ); // 80% opaque bfi_thumb( "URL-to-image.jpg", $params );
上色
$params = array( 'color' => '#ff0000' ); bfi_thumb( "URL-to-image.jpg", $params );
灰度
$params = array( 'grayscale' => true ); bfi_thumb( "URL-to-image.jpg", $params );
反相
$params = array( 'negate' => true ); bfi_thumb( "URL-to-image.jpg", $params );
同时使用多个参数
$params = array( 'width' => 400, 'height' => 300, 'opacity' => 50, 'grayscale' => true, 'colorize' => '#ff0000' ); bfi_thumb( "URL-to-image.jpg", $params );
通过WordPress图片函数调用
对于任何上传到媒体库中的图片,还可以这样调用。
例如,将the_post_thumbnail返回的图片进行缩放和灰度处理,再输出
the_post_thumbnail( array( 1024, 400, 'bfi_thumb' => true, 'grayscale' => true ) );
实际处理效果
正片叠底
Photoshop的正片叠底是非常酷的效果,该脚本并不支持,可以自己添加,方法如下。
[download id=54]
打开BFI_Thumb.php,更改如下代码
找到
public function colorize($hexColor){...}
在该方法后面添加新的方法
public function multiply($hexColor) { if (function_exists('imagefilter') && function_exists('imagesavealpha') && function_exists('imagecolorat')) { $hexColor = preg_replace('#^\##', '', $hexColor); $r = hexdec (substr ($hexColor, 0, 2)); $g = hexdec (substr ($hexColor, 2, 2)); $b = hexdec (substr ($hexColor, 4, 2)); $imagex = imagesx($this->image); $imagey = imagesy($this->image); for ($x = 0; $x <$imagex; ++$x) { for ($y = 0; $y <$imagey; ++$y) { $rgb = imagecolorat($this->image, $x, $y); $TabColors=imagecolorsforindex ( $this->image , $rgb ); $color_r=floor($TabColors['red']*$r/255); $color_g=floor($TabColors['green']*$g/255); $color_b=floor($TabColors['blue']*$b/255); $newcol = imagecolorallocate($this->image, $color_r,$color_g,$color_b); imagesetpixel($this->image, $x, $y, $newcol); } } //imagesavealpha($this->image, false); return true; } return new WP_Error( 'image_colorize_error', __('Image color change failed.', 'default'), $this->file ); }
找到
(isset($color) ? str_pad(preg_replace('#^\##', '', $color), 8, '0', STR_PAD_LEFT) : '00000000') .
在其后添加
(isset($multiply) ? str_pad(preg_replace('#^\##', '', $multiply), 8, '0', STR_PAD_LEFT) : '00000000') .
找到
if ( isset( $color ) ) { if ( is_wp_error( $editor->colorize( $color ) ) ) { return false; } }
在其后添加
if ( isset( $multiply ) ) { if ( is_wp_error( $editor->multiply( $multiply ) ) ) { return false; } }
这样就可以调用正片叠底(Multiply)功能了,如
$params = array( 'width' => 300, 'multiply' => '#ff0000' );
目测功能强大的多啊。。
这个脚本支持外链图片吗?
不支持,脚本里这样写的
Remote images are not supported due to security concerns.
你可以先把远程图片保存到本地,再调用这个脚本
谢谢美女回复,我知道了。
有更好更安全的,旧的可以淘汰了。
从松松博客过来的,贵站做的真心不错,我和大学同学也刚做了一个网站,欢迎站长朋友过来看看,能给我提点建议的话就感激不尽了,我的网站是恋字坊http://www.lianzifang.com/
现在网址会是这样的 xxx/商品分类/sss/ 这个怎么破。。。。修改language吗?
你说的是产品页面的地址?这个不是可以在固定链接里修改吗
点击产品分类“童装” 链接如下: http://www.xxx.com/商品分类/tz “tz”是我设置童装的别名 固定连接改了好像没用
如果要修改产品分类的固定链接,装插件吧,比如custom post type permalink
sola,你真的养了头猪啊
Yes, I do.
哈哈,很好玩儿的感觉。
说明缩略图尺寸设置与主题不匹配,将尺寸改为可清晰显示的值,用regenerate thumbnails插件重新生成缩略图
你好。想请教一下。我的网站首页调用了woocommerce的产品到首页。但问题图片压缩得很厉害。可以怎么设置用原图或者高质量的呢。谢谢。。