ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过185种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。

通过imagick让PHP生成PSD文件缩略图

第一步、安装ImageMagick

首先需要安装 ImageMagick ,因为 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

保存退出后并重启电脑,确保生效。

如果未生效,则将压缩包里所有「CORE_RL_*.dll」文件复制到 php 根目录,如:D:\php5.6

第三步、检查

如果一切正常,重启后在 phpinfo 里应该能看到 imagick 项,如:

如果找不到,则返回第一步,更换不同版本的 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');

建议缩略图还是以 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教程!

更多相关文章

  1. 太简单了!PHP获取文件扩展名的7中方法
  2. 015-Java Web文件上传
  3. 如何快速往cloud shell中传送文件
  4. 【JavaWeb基础】文件上传和下载(修订版)
  5. 前后端分离项目,如何优雅实现文件存储!
  6. mall整合OSS实现文件上传
  7. 图解 Class 文件结构
  8. Class 文件的结构
  9. 格式化Curl返回的Json工具

随机推荐

  1. Android学习资料分享
  2. android 去除ScrollVIew拉到尽头时再拉的
  3. Android圆形进度显示控件的SectorProgres
  4. 关于android生命周期那点事
  5. MTK Android Driver :sound
  6. 新添的Activity 要在 manifest 中注册 否
  7. android 设置 源码 修改默认主题为白底黑
  8. [置顶] android 心跳包的分析
  9. Android Permission中英对照
  10. MyEclipse10 配置 Android SDK 时遇到的