EvaCloudImage已经更名为EvaThumber,并且做了完全的重构,加入更多新功能
EvaCloudImage 是一个基于URL生成缩略图的轻量级PHP库,支持缩放/旋转/截取等多种缩略图生成方式,而仅仅需要通过简单更改图片的URL。
EvaCloudImage的源代码存放于Github,完全开源,欢迎Fork或关注我。
EvaCloudImage的功能包括:
很多时候我们不希望暴露原图片的地址,此时可以通过EvaCloudImage自动生成原图片的影子图片,保护原图片URL不被泄露,比如
假如原图片位于多级的树形目录下,影子图片也会保持与原图片同样的目录结构,从原切换到影子只需要更改域名或者根目录。
这里是原图:
http://evacloudimage.avnpc.com/upload/demo.jpg
EvaCloudImage只需要更改影子图片的URL即可实现缩放,只需要图片的文件名末尾加入以逗号分隔的参数即可:
‘ w ‘参数是Width的缩写,可以控制图片按宽度缩放。下面的URL会生成一张300px宽的图片:
http://evacloudimage.avnpc.com/thumb/demo,w_300.jpg
同理通过更改’ h ‘(Height),根据高度缩放图片:
http://evacloudimage.avnpc.com/thumb/demo,h_150.jpg
当w或h为小数时,图片会按照百分比缩放,比如w_0.4会将图片缩放至原尺寸的40%:
http://evacloudimage.avnpc.com/thumb/demo,w_0.4.jpg
注意:
使用’ c ‘参数(Crop)可以剪裁图片,比如c_100会从图片的中心位置截取出一张100px的缩略图。
http://evacloudimage.avnpc.com/thumb/demo,c_100.jpg
‘ g ‘参数(gravity)代表剪裁范围或高度,需要配合c参数一起使用。比如下例,代表从图片中心位置剪裁一张100px*200px的缩略图。
http://evacloudimage.avnpc.com/thumb/demo,c_200,g_100.jpg
如果想要指定剪裁的精确位置,需要用’x’和’y’参数指定起点坐标,比如下面的例子,代表以距离图片左边80px,上边10px为起点,剪裁一张100px*200px的图片。
http://evacloudimage.avnpc.com/thumb/demo,c_100,g_200,x_80,y_10.jpg
图片的剪裁与缩放可以混用,EvaCloudImage始终会先进行剪裁,然后再对剪裁后的图片缩放。
http://evacloudimage.avnpc.com/thumb/demo,c_100,g_200,w_50.jpg
旋转参数为’ r ‘ (rotate) ,传递一个数字作为图片旋转的角度,比如让图片按照逆时针旋转90度:
http://evacloudimage.avnpc.com/thumb/demo,h_200,r_90.jpg
通过’ q ‘(quality)可以指定jpg图片的压缩质量,默认为100:
http://evacloudimage.avnpc.com/thumb/demo,h_200,q_10.jpg
下载 最新版本的EvaCloudImage,解压即可使用。
如果服务器为Apache并且已经开启mod_rewrite模块,则无需任何设置,重写规则已经写入.htaccess文件。
请参考以下配置调整路径
server { listen 80; server_name evacloudimage.avnpc.com; location / { root /usr/www/EvaCloudImage/; index index.php index.html index.htm; if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?$1& last; } } location ~ \.php$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/www/EvaCloudImage/$fastcgi_script_name; } }
编辑源代码中的config.inc.php文件:
array( 'libPath' => __DIR__ . '/lib', //依赖库的存放路径,一般无需更改 'sourceRootPath' => __DIR__ . '/upload', //原图片的存放路径,需要读取权限 'thumbFileRootPath' => __DIR__ . '/thumb', //缩略图的存放路径,需要读写权限 'thumbUrlRootPath' => __DIR__, //缩略域名绑定的根目录 'saveImage' => false, //如果开启,所有缩略图会自动保存,在正式环境推荐打开。 );
EvaCloudImage 使用了以下的开源技术:
EvaCloudImage 是 EvaEngine项目的一个前端组件,基于New BSD License发布,简单说,你可以将EvaCloudImage用与任何商业或非商业项目中,可以自由更改EvaCloudImage的源代码,惟一做的是保留源代码中的作者信息。
实例图片来自 Рыбачка