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 如何向 MySQL 发送数据
Oct 09 PHP
PHP的分页功能
Mar 21 PHP
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
PHP统计当前在线用户数实例讲解
Oct 21 PHP
ThinkPHP实现分页功能
Apr 28 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
解决Laravel无法使用COOKIE和SESSION的问题
Oct 16 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 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
php下的权限算法的实现
2007/04/28 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
Python字符串处理函数简明总结
2015/04/13 Python
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
浅谈Python基础之I/O模型
2017/05/11 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
巡警年度自我鉴定
2014/02/21 职场文书
简单租房协议书
2014/04/09 职场文书
交通事故案件代理词
2015/05/23 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
世界文化遗产导游词
2019/08/07 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
乔迁新居祝福语
2019/11/04 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python