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下对数组进行排序的函数
Aug 08 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
php数组键名技巧小结
Feb 17 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
laravel中命名路由的使用方法
Feb 24 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
laravel按天、按小时,查询数据的实例
Oct 09 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
Oct 21 PHP
PHP实现发送微博消息功能完整示例
Dec 04 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
May 02 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
一个odbc连mssql分页的类
2006/10/09 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
举例详解Python中的split()函数的使用方法
2015/04/07 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
Python OpenCV实现视频分帧
2019/06/01 Python
Pyqt5实现英文学习词典
2019/06/24 Python
python基础教程之while循环
2019/08/14 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
心得体会怎么写
2013/12/30 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
新教师培训方案
2014/06/08 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
公司开业致辞
2015/07/29 职场文书