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 相关文章推荐
解析coreseek for sphinx的使用
Jun 21 PHP
php合并js请求的例子
Nov 01 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 PHP
利用PHP扩展Xhprof分析项目性能实践教程
Sep 05 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
laradock环境docker-compose操作详解
Jul 29 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 PHP
laravel通用化的CURD的实现
Dec 13 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入门经历和学习过程分享
2014/04/11 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
axios学习教程全攻略
2017/03/26 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
Python模拟百度登录实例详解
2016/01/20 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
python中返回矩阵的行列方法
2018/04/04 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
商场消防管理制度
2014/01/12 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
低碳生活倡议书
2014/04/14 职场文书
干部作风建设工作总结
2014/10/29 职场文书
安全生产会议制度
2015/08/06 职场文书
教师网络培训心得体会
2016/01/09 职场文书
MySQL里面的子查询的基本使用
2021/08/02 MySQL