原文地址:http://hi.baidu.com/thinkinginlamp/blog/item/4b61e9241f08820f4c088d95.html

尝试使用GraphicsMagick的缩略图功能
2010年09月03日 星期五 下午 05:32
欢迎访问我的新主页:http://huoding.com/

作者:老王

现在,对一个Web程序员来说,图像处理已经属于必会知识之一了。且不说Flickr,Yupoo等专业图片分享网站,就算是一个和图片分享不沾边的网站,也会用到很多图片处理的功能,比如说:用户上传头像,然后自动生成缩略图。

常用的图片处理工具有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是个好选择。

参考链接:

http://www.imagemagick.org/Usage/thumbnails/
http://www.graphicsmagick.org/GraphicsMagick.html#details-thumbnail

原文地址:http://hi.baidu.com/thinkinginlamp/blog/item/4b61e9241f08820f4c088d95.html

转载于:https://www.cnblogs.com/ainiaa/archive/2011/04/02/2003185.html

【转载】尝试使用GraphicsMagick的缩略图功能相关推荐

  1. oye pandora_我尝试了Pandora出色的功能优先级排序方法。 这是我学到的。

    oye pandora by Josh Temple 通过乔什·坦普尔 我尝试了Pandora出色的功能优先级排序方法. 这是我学到的. (I tried Pandora's brilliant me ...

  2. php中上传图片怎么显示出来,PHP上传图片类显示缩略图功能

    有缩略图功能 但是 感觉不全面,而且有点问题,继续学习,将来以后修改下 /** * Created by PhpStorm. * User: Administrator * Date: 2016/6/ ...

  3. dede图片上传php,织梦cms增加栏目(栏目图片)上传缩略图功能

    很早之前使用DedeCMS的时候,栏目设置里还有一个栏目图片的选项,后来DedeCMS更新到5.7版本之后,这个很实用的功能竟然没取消了,导致很多时候我们在用DedeCMS建站,处理栏目显示样式这一块 ...

  4. 技术分享| 浅谈IM 产品中的“缩略图”功能

    在 IM 产品中,发送图片是产品的一个基本功能,如何生成缩略图以及如何显示缩略图都是该模块的组成部分,本文就如何显示缩略图从产品设计的角度去阐述. 从产品上来确认该功能如何去设计,最稳妥的方式就是模仿 ...

  5. javascript实现的有缩略图功能的幻灯片切换效果

    不久前写了一个简单的图片效果,没想到那么快就要用到项目中,所以功能方面要丰富一下: 主要改进: 1# 用圆点代替之前简单的页数显示,并且点击圆点可以显示对应图片: 2# 点击圆点,显示对应图片的缩略图 ...

  6. 转载:asp.net生成缩略图通用函数(支持多种生成方式)

    文章转载自书生的Blog,原地址是http://www.cnblogs.com/pbwf/archive/2006/03/31/363981.html 感觉十分好用,比较自己写的更全面也更仔细,就放弃 ...

  7. OpenResty+lua+GraphicsMagick生成缩略图

    1.安装GraphicsMagick 下载地址:http://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.19/G ...

  8. asp.net上传图片自动生成缩略图功能代码

    if (FileUpload1.FileName.ToString() == "") { Label3.Text = "请选择图片!"; } else { Bo ...

  9. [转载] 如何使用Python 实现秒表功能?

    参考链接: 在Python中使用Tkinter创建秒表 其实python不是我们看到那么复杂,如果打好扎实的基础,我们可以用python做一些好玩的事情,比如实现秒表功能,一起来看下把~ 前言: 本文 ...

最新文章

  1. 青蛙 mysql_青蛙学Linux—MySQL常用命令(二)
  2. C++ Primer 有感(类)
  3. tensorflow随笔-tf.no_op
  4. python3字典(Map)
  5. python中的itertools_在python中使用itertools操作csv数据
  6. vue使用echarts可视化图形插件
  7. org.apache.commons.io——FileUtils学习笔记
  8. ssm访问html乱码_SpringMVC+jdbc和SSM整合
  9. 腾讯被深圳南山法院强制执行:执行标的25元;B站就招聘争议致歉;华为云回应是否将独立运作|极客头条...
  10. base64与base64url编码
  11. 基于Linux平台的libpcap源码分析和优化
  12. RTK_LIB 源码、可执行文件、rtkget、观测文件、星历文件(精密星历、广播星历)、精密钟差文件介绍
  13. 使用Eclipse统计自己项目程序代码量【实测可用】
  14. 几个常用的产品原型设计工具
  15. 体重测试仪软件,一键校准身高体重测量仪
  16. “最难就业季“中的大学生就业:本硕过半有着落 高职生成香饽饽
  17. java反序列化与Apache CC链、fastjson反序列化的理解与研究
  18. 使用win10自带功能,横屏、竖屏显示器分别设置壁纸
  19. java生成日志文件_java - 把日志生成到指定目录
  20. 使用golang解压带有文件夹的tgz文件

热门文章

  1. python2异步编程_python异步编程 (转载)
  2. 电脑cpu排名_可能是最详细的小白【笔记本电脑】选购攻略(附热门机型推荐)...
  3. ajax制作表格,Ajax实现表格实时编辑(示例代码)
  4. 写一副对子_挥毫泼墨写春联 西安街头年味分外浓
  5. Java高并发编程:性能与线程竞争
  6. ie浏览器修复_继IE之后,微软要彻底放弃它们了...
  7. WIN下Nginx缓存加速配置方法
  8. Deep Learning 教程(斯坦福深度学习研究团队)
  9. vue 使用sass 和less
  10. 本地方法中printf如何传给java--java系统级命名管道