php下尝试使用GraphicsMagick的缩略图功能
2011-01-01 23:01
447 查看
常用的图片处理工具有GD,ImageMagick,GraphicsMagick等等。GD就是个阿斗,略过不提;ImageMagick是目前最流行的图片处理工具,它的功能非常丰富;GraphicsMagick的功能略逊于ImageMagick,但是它的效率更强悍,就好比Apache和Nginx一样,一个功能更强,一个效率更胜。
现在更看重效率,所以本文就以GraphicsMagick为例来说说:
对于PHPer来说,有两种使用GraphicsMagick的方式:
1:使用PECL Gmagick扩展。
2:使用GraphicsMagick命令行。
PECL扩展的方式我并不喜欢,一来PECL代码Bug多多,二来PECL扩展的实现,代码写起来很罗嗦:比如缩放一个GIF动画图片,如果你用命令行的方式,一句话就搞定,而用PECL扩展的话,还得先算动画有几帧,再循环处理,很麻烦。所以说我更倾向于使用命令行的方式,虽然命令行操作听起来很“重”,但如果建立若干台图片服务器,通过Gearman连接起来,其实很是很有弹性的。
下面我们就以GraphicsMagick为例,采用命令行的方式来看看如何使用缩略图功能:
先上一个原始图片(input.jpg:160x120),以后的各个例子都会用到它:
BTW:列位看官现在可以咽口水了。
缩略图1
gm convert input.jpg -thumbnail '100x100' output_1.jpg
实际生成的图片大小是:100x75,也就是说说按此命令,会保持图片比例不变生成缩略图。这样很不错,但是有一个潜在的问题:我们不能简单明了的知道图片的最终大小,结果是前端显示的时候,无法设置img标签的width和height属性,如果我没记错的话,一般是推荐设定width和height属性的,否则浏览器渲染起来可能会稍稍慢一点。
缩略图2
gm convert input.jpg -thumbnail '100x100!' output_2.jpg
这次实际生成的图片大小按定义来,但图片变形了,有时候这是不能接受的。
缩略图3
gm convert input.jpg -thumbnail '100x100^' \
-gravity center -extent 100x100 output_3.jpg
这次不仅保证了大小,还保证了比例。不过图片经过了裁剪。
缩略图4
gm convert input.jpg -thumbnail '100x100' \
-background gray -gravity center -extent 100x100 output_4.jpg
这次不仅保证了大小,还保证了比例,同时没有对图片进行任何裁剪,多余的部分按指定颜色进行填充。
缩略图5
gm convert input.jpg -thumbnail '10000@' \
-background gray -gravity center -extent 100x100 output_5.jpg
这次保证了大小和比例,其中的10000就是100x100的乘积,同时在填充和裁剪之间做了一个平衡。
明白了以上几个例子,缩略图基本就能通吃了,肯定有一种会适合你的需求。GraphicsMagick的资料非常少,但好消息是GraphicsMagick和ImageMagick的用法基本兼容,所以你可以通过ImageMagick的资料来套用。
补充:如果想让用户手动裁剪头片的话,imgAreaSelect是个好选择。
现在更看重效率,所以本文就以GraphicsMagick为例来说说:
对于PHPer来说,有两种使用GraphicsMagick的方式:
1:使用PECL Gmagick扩展。
2:使用GraphicsMagick命令行。
PECL扩展的方式我并不喜欢,一来PECL代码Bug多多,二来PECL扩展的实现,代码写起来很罗嗦:比如缩放一个GIF动画图片,如果你用命令行的方式,一句话就搞定,而用PECL扩展的话,还得先算动画有几帧,再循环处理,很麻烦。所以说我更倾向于使用命令行的方式,虽然命令行操作听起来很“重”,但如果建立若干台图片服务器,通过Gearman连接起来,其实很是很有弹性的。
下面我们就以GraphicsMagick为例,采用命令行的方式来看看如何使用缩略图功能:
先上一个原始图片(input.jpg:160x120),以后的各个例子都会用到它:
BTW:列位看官现在可以咽口水了。
缩略图1
gm convert input.jpg -thumbnail '100x100' output_1.jpg
实际生成的图片大小是:100x75,也就是说说按此命令,会保持图片比例不变生成缩略图。这样很不错,但是有一个潜在的问题:我们不能简单明了的知道图片的最终大小,结果是前端显示的时候,无法设置img标签的width和height属性,如果我没记错的话,一般是推荐设定width和height属性的,否则浏览器渲染起来可能会稍稍慢一点。
缩略图2
gm convert input.jpg -thumbnail '100x100!' output_2.jpg
这次实际生成的图片大小按定义来,但图片变形了,有时候这是不能接受的。
缩略图3
gm convert input.jpg -thumbnail '100x100^' \
-gravity center -extent 100x100 output_3.jpg
这次不仅保证了大小,还保证了比例。不过图片经过了裁剪。
缩略图4
gm convert input.jpg -thumbnail '100x100' \
-background gray -gravity center -extent 100x100 output_4.jpg
这次不仅保证了大小,还保证了比例,同时没有对图片进行任何裁剪,多余的部分按指定颜色进行填充。
缩略图5
gm convert input.jpg -thumbnail '10000@' \
-background gray -gravity center -extent 100x100 output_5.jpg
这次保证了大小和比例,其中的10000就是100x100的乘积,同时在填充和裁剪之间做了一个平衡。
明白了以上几个例子,缩略图基本就能通吃了,肯定有一种会适合你的需求。GraphicsMagick的资料非常少,但好消息是GraphicsMagick和ImageMagick的用法基本兼容,所以你可以通过ImageMagick的资料来套用。
补充:如果想让用户手动裁剪头片的话,imgAreaSelect是个好选择。
您可能感兴趣的文章:
- PHP使用imagick读取PDF生成png缩略图的两种方法
- php 根据url自动生成缩略图并处理高并发问题
- php生成缩略图示例代码分享(使用gd库实现)
- php利用GD库生成缩略图示例
- 使用gd库实现php服务端图片裁剪和生成缩略图功能分享
- php生成缩略图填充白边(等比缩略图方案)
- PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
- 基于PHP服务端图片生成缩略图的方法详解
- php图片的裁剪与缩放生成符合需求的缩略图
- PHPThumb PHP 图片缩略图库
- php 缩略图实现函数代码
- PHP缩略图等比例无损压缩,可填充空白区域补充色
- PHP用GD库生成高质量的缩略图片
- 兼容性最强的PHP生成缩略图的函数代码(修改版)
- 兼容性比较好的PHP生成缩略图的代码
- 完美实现GIF动画缩略图的php代码
- php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
- php实现上传图片生成缩略图示例
相关文章推荐
- php下尝试使用GraphicsMagick的缩略图功能
- 【转载】尝试使用GraphicsMagick的缩略图功能
- 尝试使用GraphicsMagick的缩略图功能,互联网营销
- 使用gd库实现php服务端图片裁剪和生成缩略图功能分享
- 使用PHP实现生成固定大小图片缩略图功能(智能裁剪,图片不失真)
- 使用gd库实现php服务端图片裁剪和生成缩略图功能分享
- 使用PHP实现生成固定大小图片缩略图功能(智能裁剪,图片不失真)
- php生成缩略图示例代码分享(使用gd库实现)
- FCKeditor 2.5 使用方法 配置ASP上传功能 & PHP实例:FCKeditor2.6 的配置和使用方法
- PHP中使用最广的10个特性/功能/函数
- 使用PHP实现用户登录和注册的功能
- OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能
- 怎样使用PHP调用功能强大的JAVA类库
- php使用GD库创建图片缩略图的方法
- PHP中功能强大却少使用的函数 -- 为你提供更多的思路
- PHP 使用 Imagick 裁切/生成缩略图/添加水印, 自动检测和处理 GIF
- 使用jQuery和PHP实现类似360功能开关效果
- 关于尝试开发PHP的MYSQL扩展的使用
- 使用php+ajax实现登录功能教程-1
- PHP中使用pcntl和libevent实现Timer功能