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 缓存实现代码及详细注释
May 16 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
thinkphp 多表 事务详解
Jun 17 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
PHP中的一些常用函数收集
May 26 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
PHP实现微信提现功能(微信商城)
Nov 21 PHP
PHP7 字符串处理机制修改
Mar 09 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 Directory 函数的详解
2013/03/07 PHP
PHP引用返回用法示例
2016/05/28 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
jquery编写日期选择器
2017/03/16 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
vue vant Area组件使用详解
2019/12/09 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
python中的列表推导浅析
2014/04/26 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python断言assert的用法代码解析
2018/02/03 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
中青班党性分析材料
2014/02/16 职场文书
文员岗位职责
2015/02/04 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书