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学习之PHP变量
Oct 09 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
PHP 获取远程文件大小的3种解决方法
Jul 11 PHP
php里array_work用法实例分析
Jul 13 PHP
PHP身份证校验码计算方法
Aug 10 PHP
php格式化时间戳
Dec 17 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
基于laravel where的高级使用方法
Oct 10 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 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 团购折扣计算公式
2011/11/24 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
python装饰器使用方法实例
2013/11/21 Python
python学习手册中的python多态示例代码
2014/01/21 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
车队司机自我鉴定
2014/03/02 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
个人先进事迹总结
2015/02/26 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书