PHP中使用imagick生成PSD文件缩略图教程


Posted in PHP onJanuary 26, 2015

第一步、安装ImageMagick

首先需要安装 ImageMagick http://imagemagick.org/script/binary-releases.php#windows,因为 imagick 是一个可以供 PHP 调用 ImageMagick 功能的PHP扩展。(目前最新版本是:ImageMagick-6.8.9-5-Q16-x64-dll.exe)

安装目录不能有空格,我个人是安装在 C 盘根目录:

C:\ImageMagick

一路默认安装即可,安装完毕后打开 CMD 命令行界面,输入:convert ,并按回车,如果能看到一大堆的内容则表示安装成功。

如果提示“ convert 不是内部或外部命令,也不是可运行的程序或批处理文件”或者提示“请输入转换的盘符”( convert 是一个默认的将 FAT32 转换到 NTFS 的系统命令)那么你需要自己将 ImageMagick 的安装路径添加到系统路径。

我的电脑 -> 单击右键 -> 属性 -> 高级 -> 环境变量 -> 系统变量 -> 找到“Path” -> 选中并点击进行编辑 -> 把你的安装路径添加进去。

第二步、安装imagick

点击这里下载,注意下载的时候要下对应的 PHP 版本,同时注意系统是32位还是64位,以及 PHP 是 NTS 版还是 TS 版(目前最新稳定版是 3.1.2 ,关于如何判断 PHP 是 NTS 版还是 TS 版,可通过 phpinfo 查看其中的 Thread Safety 项,如果是 enabled 就代表是 TS 版,否之则就是 NTS 版)

将下载的压缩包解压,找到 php_imagick.dll 文件,把它放到 PHP 的扩展目录里,然后打开 php.ini 文件,在对应的位置添加以下一行:

extension=php_imagick.dll

保存退出后并重启电脑,确保生效。

第三步、检查

如果一切正常,重启后在 phpinfo 里应该能看到 imagick 项,如:

PHP中使用imagick生成PSD文件缩略图教程

如果找不到,则返回第一步,更换不同版本的 ImageMagick 重新安装并重新调试。

第四步、测试

OK,到这一步可以开始编写代码了,过程就不细说了,直接上代码

error_reporting(E_ERROR | E_WARNING);

 

$im = new Imagick('1.psd');

$im->setImageIndex(0);

$im->setIteratorIndex(0);

$im->stripImage(); //去除图片信息

$im->setImageCompressionQuality(80); //图片质量

$im->writeImage('1.jpg');

以上代码已经经过测试可以正确生成出一张 1.jpg 的图片。

 建议缩略图还是以 jpg 格式,因为 png 格式不支持压缩,我在测试的时候使用 30M 的 PSD 文件,生成出来的 png 缩略图有 3M 多,而 jpg 只有 200KB 左右,并且生成 png 图片的速度明显很慢,大概需要3,4秒。

另外还做了极端测试,用了一近 600M 的 PSD 文件生成 jpg 缩略图,速度基本在2秒内,文件大小不到 2.5M ,由于并未对图片进行尺寸的修改,所以最终生成文件的体积可以根据实际情况再减小。

第五步、其它格式

除了 PSD 文件,我还另外尝试了一些其它格式,比如 MP4 、AVI 等视频格式,但生成速度超级慢。最后发现比较实用的就是生成 PDF 文件的缩略图,但处理 PDF 文件前,需要安装 Ghostscript ,然后整体的代码基本和生成 PSD 的代码一样

$im = new Imagick();

$im->readImage('D:/soft/wamp/www/test/1.pdf[0]');

//echo $im->getNumberImages();

$im->writeImages('D:/soft/wamp/www/test/1.jpg', false);
PHP 相关文章推荐
随时给自己贴的图片加文字的php水印
Mar 16 PHP
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
php 获取客户端的真实ip
Nov 30 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
php设计模式 State (状态模式)
Jun 26 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
PHP5.2中PDO的简单使用方法
Mar 25 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 #PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 #PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 #PHP
php ImageMagick windows下安装教程
Jan 26 #PHP
php的GD库imagettftext函数解决中文乱码问题
Jan 24 #PHP
php绘图之生成饼状图的方法
Jan 24 #PHP
php绘图之在图片上写中文和英文的方法
Jan 24 #PHP
You might like
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
pymssql ntext字段调用问题解决方法
2008/12/17 Python
解读! Python在人工智能中的作用
2017/11/14 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
程序员机试试题汇总
2012/03/07 面试题
工商治理实习生的自我评价
2014/01/15 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
委托证明范本
2014/11/25 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
加入学生会自荐书
2015/03/05 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
话题作文之自信作文
2019/11/15 职场文书