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 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
使用数据库保存session的方法
Oct 09 PHP
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
用PHP代码给图片加水印
Jul 01 PHP
PHP中Trait及其应用详解
Feb 14 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
YII2框架使用控制台命令的方法分析
Mar 18 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中opendir函数用法实例
2014/11/15 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
php中数组最简单的使用方法
2020/12/27 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
angularjs http与后台交互的实现示例
2018/12/21 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Python多线程和队列操作实例
2015/06/21 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
我们是伦敦女孩:WalG
2018/01/08 全球购物
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
财务工作个人总结
2015/02/27 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript