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之第十天
Oct 09 PHP
用PHP制作静态网站的模板框架(二)
Oct 09 PHP
实时抓取YAHOO股票报价的代码
Oct 09 PHP
php 全局变量范围分析
Aug 07 PHP
php Static关键字实用方法
Jun 04 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 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
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
解决FLASH需要点击激活的代码
2006/12/20 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
程序员经常用到的UNIX命令
2015/04/13 面试题
七年级生物教学反思
2014/01/30 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
Java基础之this关键字的使用
2021/06/30 Java/Android