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 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 PHP
php中addslashes函数与sql防注入
Nov 17 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
laravel-admin 中列表筛选方法
Oct 03 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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中操作ini配置文件的方法
2013/04/25 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
php目录拷贝实现方法
2015/07/10 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Python群发邮件实例代码
2014/01/03 Python
Python函数返回值实例分析
2015/06/08 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
Python实现Linux中的du命令
2017/06/12 Python
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
社会保险接收函
2014/01/12 职场文书
初婚初育证明范本
2014/11/24 职场文书
家长通知书家长意见
2014/12/30 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
党小组评议意见
2015/06/02 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏