先介绍一下ImageMagick为何物
ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具。
什么是imagick
imagick是一个PHP的扩展,是用ImageMagick提供的API来进行图片的操作,不过这些操作已经包装到扩展imagick中去了,最终调用的是ImageMagick提供的API,所以使用imagick首先要安装ImageMagick。
什么是GD库
GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印。
使用imagick的初衷
常规的服务器处理图片,比如服务器上传的图片的裁剪和缩放,打水印,我们都采用了GD库进行的操作,可以说大部分网站都采用了GD库处理的图片!只有GD库不再满足需求才会更换成其他的,比如现在要说的imagick
最近发现上传超分辨率图片就会失败,何为超分辨率图片,其实是我自己定义的,分辨率宽度大于1200px,高度大于4000px,极有可能会上传失败!后经过排查,memory_limit需要足够大才行!这也成为内存开销大户了,长图耗费的内存大于128M内存,甚至更高!并且失败几率也很大!
所以选择来去,使用imagick会更好!以下为CentoOS7+PHP7的安装方式,其他版本大同小异:
首先安装 ImageMagick
yun install ImageMagick
安装完成后执行
convert -version
如果安装成功会显示你安装的ImageMagick版本号
然后再开始安装 imagick
wget http://pecl.php.net/get/imagick-3.4.3.tgz
tar -zxvf imagick-3.4.3.tgz
cd imagick-3.4.3
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
make && make install
make install结束后,会告知你编译后的扩展so存放位置,一般在PHP用户自定义扩展库里,这个不需要管他。
然后打开php.ini,在最下面增加一行
extension = imagick.so
重启php-fpm,做个PHPinfo探针就可以看到imagick扩展了
顺便说下imagick扩展的用法
用法未必通用,但类似
if(extension_loaded('imagick')){//判断是否支持imagick扩展
$imagick = new \Imagick($image);
$w = $imagick->getImageWidth();
$h = $imagick->getImageHeight();
if ($w > $width || $h > $height) {
$imagick->cropThumbnailImage($createwidth, $createheight);
}
$imagick->setImageFormat('JPEG');
$imagick->setImageCompression(\Imagick::COMPRESSION_JPEG);
$a = $imagick->getImageCompressionQuality() * 0.75;
if ($a == 0) {
$a = 75;
}
if(empty($filename)) $filename = substr($image, 0, strrpos($image, '.')).$suffix.'.'.$type;
$imagick->setImageCompressionQuality($a);
$imagick->stripImage();
$imagick->writeImage($filename);
$imagick->clear();
$imagick->destroy();
}
谢谢大家,教程结束
评论前必须登录!
注册