EvaCloudImage 已经更名为EvaThumber,并且做了完全的重构,加入更多新功能

EvaCloudImage 是一个基于 URL 生成缩略图的轻量级 PHP 库,支持缩放/旋转/截取等多种缩略图生成方式,而仅仅需要通过简单更改图片的 URL。

EvaCloudImage is a light-weight & opensource url based image transformation php library. See English version document.

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

EvaCloudImage Resized Image

###根据高度缩放:

同理通过更改’h’(Height),根据高度缩放图片:

http://evacloudimage.avnpc.com/thumb/demo,h_150.jpg

EvaCloudImage Resized Image

###按百分比缩放:

当 w 或 h 为小数时,图片会按照百分比缩放,比如 w_0.4 会将图片缩放至原尺寸的 40%:

http://evacloudimage.avnpc.com/thumb/demo,w_0.4.jpg

EvaCloudImage Resized Image

注意:

  • 当 w 与 h 既有整数又有小数时,以整数为准
  • 当 w 与 h 同时为小数时,以 w 为准

# 图片剪裁

使用’c’参数(Crop)可以剪裁图片,比如 c_100 会从图片的中心位置截取出一张 100px 的缩略图。

http://evacloudimage.avnpc.com/thumb/demo,c_100.jpg

EvaCloudImage Resized Image

'g’参数(gravity)代表剪裁范围或高度,需要配合 c 参数一起使用。比如下例,代表从图片中心位置剪裁一张 100px*200px 的缩略图。

http://evacloudimage.avnpc.com/thumb/demo,c_200,g_100.jpg

EvaCloudImage Resized Image

如果想要指定剪裁的精确位置,需要用’x’和’y’参数指定起点坐标,比如下面的例子,代表以距离图片左边 80px,上边 10px 为起点,剪裁一张 100px*200px 的图片。

http://evacloudimage.avnpc.com/thumb/demo,c_100,g_200,x_80,y_10.jpg

EvaCloudImage Resized Image

图片的剪裁与缩放可以混用,EvaCloudImage 始终会先进行剪裁,然后再对剪裁后的图片缩放。

http://evacloudimage.avnpc.com/thumb/demo,c_100,g_200,w_50.jpg

EvaCloudImage Resized Image

###填充模式

在实际使用中,我们经常会遇到这样的场景:需要截取并缩放图片以适应网页布局,此时我们可以使用剪裁中的填充模式,在填充模式下,需要指定剪裁参数为 c_fill,同时设定填充的宽度与高度,然后可以得到一张完全吻合设定尺寸,同时经过缩放与剪裁处理的图片。

http://evacloudimage.avnpc.com/thumb/demo,c_fill,w_250,h_50.jpg

EvaCloudImage Resized Image

在填充模式下还可以设定剪裁范围,允许的剪裁范围包括’top’(从上方), ‘bottom’(从下方), ‘left’(从左), ‘right’(从右)。

http://evacloudimage.avnpc.com/thumb/demo,c_fill,g_top,w_250,h_60.jpg

EvaCloudImage Resized Image

# 旋转

旋转参数为’r’ (rotate) ,传递一个数字作为图片旋转的角度,比如让图片按照逆时针旋转 90 度:

http://evacloudimage.avnpc.com/thumb/demo,h_200,r_90.jpg

EvaCloudImage Resized Image

# JPG 图片压缩质量

通过’q’(quality)可以指定 jpg 图片的压缩质量,默认为 100:

http://evacloudimage.avnpc.com/thumb/demo,h_200,q_10.jpg

EvaCloudImage Resized Image

# 下载

下载 最新版本的 EvaCloudImage,解压即可使用。

# 安装

###1. 环境需求

  1. PHP 版本大于 5.3.0
  2. 以安装 GD 2.0+
  3. 服务器已经开启 Url Re-write 模块

###2. 对安装目录开启 Url Re-write

####Apache 设置:

如果服务器为 Apache 并且已经开启mod_rewrite模块,则无需任何设置,重写规则已经写入.htaccess 文件。

####Nginx

请参考以下配置调整路径

    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;
            }
    }

###3. 配置文件

编辑源代码中的 config.inc.php 文件:

array(
    'libPath' => __DIR__ . '/lib',  //依赖库的存放路径,一般无需更改
    'sourceRootPath' => __DIR__ . '/upload',  //原图片的存放路径,需要读取权限
    'thumbFileRootPath' => __DIR__ . '/thumb', //缩略图的存放路径,需要读写权限
    'thumbUrlRootPath' => __DIR__, //缩略域名绑定的根目录
    'saveImage' => false,  //如果开启,所有缩略图会自动保存,在正式环境推荐打开。
);

# 相关技术

EvaCloudImage 使用了以下的开源技术:

  • PHP Thumb : 好用的缩略图生成库;
  • Cloudinary : API 设计参考了著名云服务 Cloudinary;

# 许可证

EvaCloudImage 是 EvaEngine项目的一个前端组件,基于New BSD License发布,简单说,你可以将 EvaCloudImage 用与任何商业或非商业项目中,可以自由更改 EvaCloudImage 的源代码,惟一做的是保留源代码中的作者信息。

# 感谢

实例图片来自 Рыбачка

# 更新

  • 2012/08/14 增加填充模式

Tags :EvaEngineThumbnailGD

Donate:Buy me a coffee|文章有帮助,可以请我喝杯咖啡