专栏首页代码小睿通过 imagick 让 PHP 生成 PSD 文件缩略图

通过 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');

  以上代码已经经过测试可以正确生成出一张 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);

附录:

  1、php 图像处理库 ImageMagick windows 下的安装

  2、php+Imagick 对 psd 文件的操作

  3、imagick 官方文档

  4、PHP 中用 imagick 将 PDF 转成图片

  5、解决 GhostScript 无法打开中文 PDF 的问题

  6、Installing Imagick for PHP 5.6.3 and Apache 2.4 on Win 7(2016/09/19 新增)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一句命令快速合并 JS、CSS

      在项目开发环境下,我们会把 JS 代码尽可能模块化,方便管理和修改,这就避免不了会出现一个项目自身 JS 文件数量达到 10 个或者更多。   而项目上线后...

    胡尐睿丶
  • 绝对定位的层判断是否有相互覆盖的解决算法

      这个算法我在上篇博文《jQuery 模拟 ubuntu 3D desktop 的 Dodge Effect 效果》中有提到过。   但那时想法过于简单,当时...

    胡尐睿丶
  • 让视频压制更简单

      一直待在一个美剧字幕组做后期压制工作,也经常被问到“要怎么压制?”这种即使用一二十句话都无法说清的问题。

    胡尐睿丶
  • yii2代码学习-BaseYii

    yii框架的v-2.0-alpha版本已经发布,PHP版本最低要求是PHP-5.4,将会在今年早些时候推出正式版。阅读yii2的代码,能学到很多东西,代码写的很...

    luxixing
  • 流氓会武功 | 这款勒索软件不仅能勒索,还能DDoS

    一款名为 FireCrypt 的勒索软件正悄然来袭。它不仅具备一般勒索软件的特性,会将受感染的系统文件恶意加密。还会试图利用受感染者机器,向其源码中硬编码的 U...

    FB客服
  • 【Python 第56课】 正则表达式(2)

    有同学问起昨天那段测试代码里的问题,我来简单说一下。 1. r"hi" 这里字符串前面加了r,是raw的意思,它表示对字符串不进行转义。为什么要加这个?你可以试...

    Crossin先生
  • python【第十二篇】Mysql基础

    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。我们也可...

    用户1432189
  • 在IIS中部署.net core应用

    对于熟悉IIS的程序员来说,将 .NET Core Web应用部署在IIS中,无疑是方便统一管理的事情。网上给出很多如何在IIS中部署 .NET Core 应用...

    thz
  • Ubuntu搭建WebStorm开发NodeJS环境

    AlicFeng
  • CSS3与页面布局学习总结(三)——BFC、定位、浮动、7种垂直居中方法

    一、BFC与IFC 1.1、BFC与IFC概要 BFC(Block Formatting Context)即“块级格式化上下文”, IFC(Inline For...

    张果

扫码关注云+社区

领取腾讯云代金券