`

EvaCloudImage - 基于URL生成缩略图的轻量级PHP库

 
阅读更多

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 增加填充模式

分享到:
评论

相关推荐

    无刷新上传--可生成缩略图--demo.zip

    本DEMO "无刷新上传--可生成缩略图--demo.zip" 恰好涵盖了这个领域的几个关键知识点,包括无刷新上传、PHP上传类的使用、远程上传以及生成缩略图。 首先,无刷新上传主要依赖于AJAX(Asynchronous JavaScript and ...

    基于Springmvc的上传图片并生成缩略图

    在本文中,我们将深入探讨如何基于Springmvc实现图片上传及生成缩略图的功能。Springmvc是Spring框架的一个重要模块,用于构建MVC模式的Web应用,它提供了强大的数据绑定、模型映射、视图渲染等功能,是Java开发中的...

    java 图片生成缩略图

    "java 图片生成缩略图" Java 图片生成缩略图是Java程序开发中一个常见的需求,通过将图片以缩略图形式展示,可以提高用户体验和网站性能。在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 ...

    pdf生成缩略图

    PDF生成缩略图是将PDF文档中的页面转换成小尺寸的图像表示,通常用于预览、索引或在文件管理器中快速查看PDF内容。在IT领域,这涉及到PDF处理和图像处理技术。以下是一些关于如何在C#中生成PDF缩略图的关键知识点: ...

    ASP.Net常用功能整理--生成图片的缩略图

    在ASP.NET开发中,生成图片的缩略图是一项常见的需求,尤其在网站中展示大量图片时,为了提高页面加载速度和用户体验,通常需要对原始图片进行尺寸调整,生成适合网页显示的缩略图。本教程将详细介绍如何在ASP.NET...

    java 上传图片生成缩略图

    本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图的功能。 #### 核心知识点概述 1. **读取与获取文件路径**:利用`HttpServletRequest`对象获取服务器上的文件存储路径。 2. **...

    php 生成缩略图

    使用GD库生成缩略图的核心函数是`imagecreatetruecolor()`,它创建一个新的真彩色图像,然后用`imagecopyresampled()`将源图像缩放并复制到新图像上,以实现比例缩放。 ```php // 加载源图像 $source = ...

    生成网页缩略图(输入网址,宽度,高度生成缩略图)

    网页缩略图生成技术是一种常见的Web开发功能,它允许用户通过输入网址、设定目标宽度和高度,快速获取网站页面的预览图片。这种技术在许多应用场景中非常实用,例如社交媒体分享、搜索引擎结果展示、网站目录索引等...

    基于url获得缩略图,水印图,二维码图

    在IT行业中,生成基于URL的缩略图、水印图和二维码图是常见的图像处理需求。这些功能广泛应用于网站开发、社交媒体分享、数据分析等多个场景。接下来,我们将详细探讨如何实现这些功能。 首先,让我们从“缩略图”...

    多图片上传-判断图片像素-生成缩略图

    在IT领域,多图片上传、判断图片像素以及生成缩略图是常见的图像处理技术,尤其在网站开发和移动应用设计中极为重要。这些功能能够优化用户体验,减少服务器存储空间,并加速网页加载速度。下面我们将详细探讨这三个...

    PHP大图片生成缩略图

    使用GD库生成缩略图的基本步骤包括打开源图片、创建目标图片、设置缩放比例、复制和调整图像、然后保存结果。以下是一个简单的示例代码: ```php $src = '4.jpg'; // 源图片路径 $dst = 'small_4.jpg'; // 缩略...

    php 自动缩略图,php智能生成缩略图

    例如,可以使用缓存机制,当原图首次生成缩略图后,将缩略图存储起来,后续请求直接返回缓存的缩略图,避免重复计算。 在实际应用中,一个PHP自动缩略图类或者函数通常会封装这些功能,提供简单的接口供开发者调用...

    一个PHP生成缩略图的类库

    在PHP开发中,生成缩略图是一项常见的任务,特别是在处理用户上传的图片或者构建图像处理应用时。这个“PHP生成缩略图的类库”提供了一种高效且灵活的方式来创建不同类型的缩略图,包括扭曲型、按比例缩放、最小裁剪...

    一个批量生成缩略图工具的源代码

    在IT行业中,生成缩略图是一项常见的任务,特别是在图像处理、网页设计以及各种应用程序中。缩略图的主要目的是为了快速预览大图像或一组图像,节省用户的时间和带宽。本压缩包提供了一个批量生成缩略图工具的源代码...

    微信分享插件PHP源码JS-SDK接口生成缩略图.rar

    H5网站经微信转发时,解决分享微信好友和微信朋友圈时无缩略图的问题,以此学会微信开发,JS-SDK配置问题,包括全部内容和注意事项

    liunx 上传word文件生成缩略图

    在Linux环境中,生成Word文件的缩略图通常涉及到两个关键组件:ImageMagick和Imagick(PHP扩展)。以下是对这两个组件以及如何使用它们来创建缩略图的详细解释。 一、ImageMagick ImageMagick是一个开源的跨平台...

    吐血推荐--PHP生成图片缩略图源代码

    在本文中,我们将深入探讨如何使用PHP生成图片缩略图,重点介绍一个实用的PHP类`resizeimage`,以及在实现这个功能时需要的GD2图形库。PHP是一种流行的服务器端脚本语言,广泛用于网页开发,而生成图片缩略图是常见...

    php 使用ffmpeg 视频转换,截图,生成缩略图

    当这两者结合时,我们可以用PHP通过FFmpeg API来实现对视频的高级操作,如视频转换、截图以及生成缩略图。在这个场景中,提供的压缩包包含了一个PHP类,专门用于利用FFmpeg进行这些任务。 首先,我们需要理解FFmpeg...

    php生成图片缩略图并添加水印

    生成各种图片缩略图,并支持添加水印 一个生成缩略图的函数 一个添加水印的函数 傻瓜式应用很简单

Global site tag (gtag.js) - Google Analytics