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中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
php实现搜索类封装示例
Mar 31 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
Sep 19 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 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 session的传递方式
2016/06/15 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
PHP实现八皇后算法
2019/05/06 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
js实现拖拽功能
2017/03/01 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
村捐赠仪式答谢词
2014/01/21 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
承诺书格式范文
2014/06/03 职场文书
个人委托书怎么写
2014/09/17 职场文书
2015年测量员工作总结
2015/05/23 职场文书
2016寒假假期总结
2015/10/10 职场文书
python本地文件服务器实例教程
2021/05/02 Python
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS