Skip to content

langwan/org.chengxufan.php.thumb

Repository files navigation

org.chengxufan.php.thumb

一个基于URL生成缩略图的Yii扩展,当前版本v2.0.0

原始图片

<img src="http://www.chengxufan.com/site/img/thumb.example" />

宽度固定高度自适应(会被拉伸)

如果你想创建一个宽度为400px的图片,你需要传递"fw_400"这个指令,如果你原始图片的宽度不够,图片会被拉伸,这样方式的好处是让你的图片完全适应你的设计。

<img src="http://www.chengxufan.com/site/img/thumb.example,fw_400" />

设置最大宽度高度自适应

如果你想创建一个宽度为400px的图片,你需要传递"mw_400"这个指令,如果你原始图片的宽度不够,会把原始图片输出到屏幕,这样图片不会被放大而难看。

<img src="http://www.chengxufan.com/site/img/thumb.example,mw_400" />

拉伸图片

如果你想得到一张400px * 300px的图片,你需要传递"r_400x300"这个指令,如果你想拉伸出一个正方形的图片,你也可以传递"r_400"。

<img src="http://www.chengxufan.com/site/img/thumb.example,r_400x300" />
<br />
<img src="http://www.chengxufan.com/site/img/thumb.example,r_400" />

自适应(可能被放大)

如果你想得到一张400px * 400px的图片,你需要传递"s_400x300x555555"这个指令,图片不会被拉伸,但是空白的地方会被颜色填充,如果原图片的高度和宽度比你想得到的图片要小,图片会被放大。

<img src="http://www.chengxufan.com/site/img/thumb.example,s_400x400x555555" />

自适应(不会被放大)

如果你想得到一张400px * 400px的图片,你需要传递"sm_400x300x555555"这个指令,图片不会被拉伸,但是空白的地方会被颜色填充,如果原图片的高度和宽度比你想得到的图片要小,会按照原始宽度和高度填充背景色。

<img src="http://www.chengxufan.com/site/img/thumb.example,sm_400x400x555555" />

组合指令

如果你想让图片先自适应,然后再缩小到100px*100px,你可以使用两个指令组合"s_400x400x555555,r_100",指令会从左到右依次执行

<img src="http://www.chengxufan.com/site/img/thumb.example,s_400x400x555555,r_100" />

强制更新图片

如果你发现图片没有正确生成,你希望在后台系统重新生成缩略图,你有两种办法,第一种办法是在{destDirectory}当中清除那个图片,或者你在后台调用代码覆盖这张缩略图。

	
$uri = 'chengxufanphpthumb,fw_100';

$thumb = new ChengxufanThumb;
$thumb->setSrcDirectory($this->srcDirectory)
	->setKey($uri)
	->setDestDirectory($this->destDirectory)
	->setForce(true)
	->execute();

其中setForce(true)是希望每次调用强制覆盖缩略图。

清理的缩略图

如果你的磁盘空间有限,你可以定期清理{$destDirectory}目录的缩略图,它们会重新生成。

扩展指令

如果你想扩展出新的指令,你可以继承ChengxufanThumbCommand类实现自己的指令。

class CommandX extends ChengxufanThumbCommand {
	public function run($sfile, $dfile, $dmine, $value) {
		
	}
}
  • $sfile - 原始图片的文件路径,如果你使用了组合指令,第二个指令以后$sfile等于$dfile。
  • $dfile - 缩略图生成的文件路径。
  • $dmine - 需要生成的文件格式
  • $value - 指令的值

调用方法

  1. 配置Yii
'aliases' => array(
	...
	'cthumb' => 'application.vendors.cthumb',
	...
),

'urlManager'=>array(
        'urlFormat'=>'path',
        'showScriptName' => false,
        'rules'=>array(
        	...
                'site/img/<uri:[\w_,-]+>' => 'site/img'
                ...
        ),
),
  1. 配置Action
public function actions()
{
	return array(
        'img'=>array(
            'class'=>'cthumb.ChengxufanThumbAction',
            'srcDirectory' =>Yii::app()->getBasePath()."/../resource/upload/",
            'destDirectory' => Yii::app()->getBasePath()."/../resource/thumb/"
        ),
	);
}

Thumb设置

* 表示必须设置的方法。

方法 默认值 说明
* setKey($key) null 一般key是例子当中全部uri的部分,可以用$_GET['uri']来获取,你也可以用其它形式来赋值。
* setDestDirectory($destDirectory) null 缩略图的存放路径。
* setSrcDirectory($srcDirectory) null 原始图片的存放路径。
setForce($force) true false表示强制更新图片,true相反。
setMine($mine) image/png 你希望缩略图的生成格式,默认是png图。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages