PHP建图通常都用GD库,因为是内置的不需要在服务器上额外安装插件,所以用起来比较省心,但是如果你的程序主要的功能就是处理图像,那么就不建议用GD了,因为GD不但低效能而且能力也比较弱,占用的系统资源也颇多,另外GD的creatfrom也有bug,而imagick却是一个很好的替代品,为此最近把我的一个项目由GD改成了imagick

ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG。ImageMagic的主要精力集中在性能,减少bug以及提供稳定的API和ABI上。
ImageMagick是一个用来创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线, 多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。支持大多数的操作系统

一、安装ImageMagick

1、安装ImageMagick
#wget http://soft.vpser.net/web/imagemagick/ImageMagick-6.7.1-2.tar.gz
#tar zxvf ImageMagick-6.7.1-2.tar.gz
#cd ImageMagick-6.7.1-2/
#./configure --prefix=/usr/local/imagemagick --disable-openmp
#make && make install
#ldconfig

2、测试ImageMagick是否可以正常运行
#/usr/local/imagemagick/bin/convert -version
Version: ImageMagick 6.7.1-2 2016-06-29 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features:

二、安装PHP扩展:imagick

1、安装PHP扩展:imagick
#wget http://pecl.php.net/get/imagick-3.0.1.tgz
#tar zxvf imagick-3.0.1.tgz
#cd imagick-3.0.1/
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
#make && make install
#ldconfig

2、php加载imagick扩展
#vi /etc/php.ini
extension_dir = "/usr/lib64/php/modules"
extension="imagick.so"
#:wq! #保存退出

3、重新加载php-fpm
#service php-fpm reload
如果是apache 则 #service httpd restart

4、测试,查看phpinfo信息,如下图所示:

5、php代码测试

<?php
/** 图片压缩类  重新封装了Imagick* * @version 2014-07-30* @author andy1219111@163.com*/
class Imgick_tool{//Imagick对象实例public $obj = null;public function __construct(){//判断是否加载了该扩展if(!extension_loaded('Imagick')){return false;}$this->obj = new Imagick();}/** png2jpg转换图片格式* * @param string src_img 源图片路径* @param string dest_img 要生成的图片的路径* @return boolean 转换成共返回true  否则false*/public function png2jpg($src_img,$dest_img){if(!is_object($this->obj)){return false;}try{$this->obj->readImage($src_img);if($this->obj->writeImage($dest_img)){$this->destory();return $dest_img;}return false;}catch (ImagickException $e){return false;}}/** 去掉图片的profile信息* * @param string src_img 源图片路径* @return string src_img 图片名称 否则返回false*/public function strip_profile($src_img,$dest_img = ''){if(!is_object($this->obj)){return false;}try{$dest_img = empty($dest_img) ? $src_img : $dest_img;$this->obj->readImage($src_img);$this->obj->stripImage ();if($this->obj->writeImage ($dest_img)){$this->destory();return $src_img;}return false;}catch (ImagickException $e){return false;}}/** 设置jpg图片质量* * @param string src_img 源图片路径* @param string dest_img 要生成的图片的路径* @return boolean 转换成共返回true  否则false*/public function set_quality($src_img,$quality = 70,$dest_img = ''){if(!is_object($this->obj)){return false;}try{$dest_img = empty($dest_img) ? $src_img : $dest_img;$this->obj->readImage($src_img);$this->obj->setImageCompression(Imagick::COMPRESSION_JPEG);$this->obj->setImageCompressionQuality($quality);if($this->obj->writeImage($dest_img)){$this->destory();return $dest_img;}return false;}catch (ImagickException $e){return false;}}/** 图片瘦身* * @param string src_img 源图片路径* @param int quality 设置图片压缩质量* @param string dest_img 要生成的图片的路径* @return boolean 转换成共返回true  否则false*/public function slimming($src_img,$quality = 60,$dest_img = ''){if(!is_object($this->obj)){return false;}try{$dest_img = empty($dest_img) ? $src_img : $dest_img;$this->obj->readImage($src_img);$this->obj->setImageFormat('jpeg');$this->obj->setImageCompression(Imagick::COMPRESSION_JPEG);//将图片的质量降低到原来的60%$quality = $this->obj->getImageCompressionQuality() * $quality / 100;$this->obj->setImageCompressionQuality($quality);$this->obj->stripImage();if($this->obj->writeImage($dest_img)){$this->destory();return $dest_img;}return false;}catch (ImagickException $e){return false;}}/** 生成缩略图* * @param string src_img 源图片路径* @param int quality 设置图片压缩质量* @param string dest_img 要生成的图片的路径* @return boolean 转换成共返回true  否则false*/public function thump($src_img,$width = 250,$height = ''){if(!is_object($this->obj)){return false;}try{$file_info = pathinfo($src_img);//生成缩略图名称$file_name = substr($file_info['basename'],0,strrpos($file_info['basename'],'.'));$dest_img = $file_info['dirname'] . '/' . $file_name . '_thump.' . $file_info['extension'];$this->obj->readImage($src_img);//计算要获得缩略图的高度$img_width = $this->obj->getImageWidth();$img_height = $this->obj->getImageHeight();$dest_height = $img_height * ($width / $img_width);$this->obj->resizeImage($width, $dest_height, Imagick::FILTER_CATROM, 1, false);//生成图片if($this->obj->writeImage($dest_img)){$this->destory();return $dest_img;}return false;}catch (ImagickException $e){return false;}}/** 释放资源* */function destory(){if(is_object($this->obj)){$this->obj->clear();$this->obj->destroy();}}}function resize($image, $width, $height, $crop) {$imagick = new Imagick();$imagick->readImageBlob($image);$w = $imagick->getImageWidth();$h = $imagick->getImageHeight();if ($w > $width || $h > $height) {if ($crop) {$imagick->cropThumbnailImage($width, $height);} else {$imagick->resizeImage($width, $height, Imagick::FILTER_CATROM, 1, true);}}$imagick->setImageFormat('JPEG');$imagick->setImageCompression(Imagick::COMPRESSION_JPEG);$a = $imagick->getImageCompressionQuality() * 0.75;if ($a == 0) {$a = 75;}$imagick->setImageCompressionQuality($a);$imagick->stripImage();$blob = $imagick->getImageBlob();$imagick->clear();$imagick->destroy();return $blob;
}/*
$saveDir   保存地址
$file      png图片地址*/
function imageToJpg($saveDir,$file){$saveDir = str_replace ( "\\", "/", $saveDir );$srcFile=$saveDir.$file;$srcFileExt= strtolower ( trim ( substr ( strrchr ( $srcFile, '.' ), 1 ) ) );if($srcFileExt=='jpeg'||$srcFileExt=='jpg'){return $saveDir.$file;}$srcFileName = basename ( $file ,'.'.$srcFileExt);$dstFile = $saveDir.$srcFileName.".jpg";$photoSize   = GetImageSize($srcFile);$pw  = $photoSize[0];$ph  = $photoSize[1];$srcImage = true;if ( stripos( strtolower($srcFile),".gif") ){//创建图片$dstImage = ImageCreateTrueColor( $pw, $ph);imagecolorallocate($dstImage, 255, 255, 255);//读取图片$srcImage  = ImageCreateFromGif($srcFile);//合拼图片imagecopyresampled($dstImage,$srcImage ,0,0,0,0,$pw,$ph ,$pw,$ph);//ImageCopyResized($dstImage,$srcImage,0,0,0,0,$pw,$ph,$pw,$ph);ImageJpeg($dstImage,$dstFile);imagedestroy($srcImage );}if (  stripos( strtolower($srcFile),".png") ){//创建图片$dstImage = ImageCreateTrueColor( $pw, $ph);imagecolorallocate($dstImage, 255, 255, 255);//读取图片$srcImage  = ImageCreateFromPNG($srcFile);//合拼图片imagecopyresampled($dstImage,$srcImage ,0,0,0,0,$pw,$ph ,$pw,$ph);ImageJpeg($dstImage,$dstFile);imagedestroy($srcImage );}/*if ( $srcImage == false  ||  stripos( strtolower($srcFile),".jpg") ){$srcImage = ImageCreateFromJPEG($srcFile);}*/if(is_file($srcFile)){@unlink($srcFile);}return $saveDir.$srcFileName.".jpg";
}imageToJpg('/var/www/html/test/imagick/','e.jpg');//缩略图片并压缩大小
$image = new Imagick('3.jpg');
$image->resizeImage(200,100,Imagick::FILTER_LANCZOS,1);
//$image->cropImage($width_2, $height_2, $x, $y);
$image->setCompression(Imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality(82);
$image->writeImage('32.jpg');
$image->destroy();$thumb = new Imagick();
$thumb->readImage('3.jpg');
$thumb->writeImage('test.jpg');
$thumb->clear();
$thumb->destroy(); $imagick=new Imgick_tool();
$imagick->png2jpg('fangao.png','fangao.jpg');//$a=resize('3.jpg',200,100,0);?>

参考:http://blog.csdn.net/andy1219111/article/details/38335987

centos安装php扩展imagick-高性能处理图片相关推荐

  1. CentOS 安装 kafka 扩展

    说到kafka,这个还得从前几天面试说起,当时面试官跟我聊起了他们公司项目运用的架构:swoole结合kafka实现的超高性能消息队列!作为一个developer,对这种有超高性能的架构一直都是见猎心 ...

  2. PHP安装imagemagick扩展imagick

    点击下载p_w_picpathmagick系统源码包 点击下载php扩展imagick 安装p_w_picpathmagick: # ./configure --prefix=/usr/local/p ...

  3. centos 安装mysql扩展_centos php安装mysql扩展的方法

    centos php安装mysql扩展的方法:首先下载mysql扩展包:然后找到并打开php.ini配置文件:接着添加扩展包,语句是"extension=mysql.so":最后重 ...

  4. linux php sphinx拓展,Centos安装php扩展sphinx

    官方地址:http://pecl.php.net/package/sphinx wget http://pecl.php.net/get/sphinx-1.3.3.tgz tar -zxvf sphi ...

  5. php7 imagick安装,php扩展imagick安装for windows7

    一.web环境如下: 数据库:MariaDB 10.1.13 服务端脚本:php-7.1.8 web服务器:nginx-1.10.3 二.安装imagick需要先安装ImageMagick 2,下载( ...

  6. centos 安装php扩展gd,linux(centos)下为php添加添加GD扩展

    yum -y install libjpeglibjpeg-devel libpng libpng-devel freetype freetype-devel 安装依赖库 yum -y install ...

  7. centos安装php扩展soap实现webservice(已经做测试)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/nuli888/article/details/51854596 php有两个扩展可以实现web se ...

  8. php安装扩展imagick,php安装扩展imagick

    之前使用GD库可以满足项目中需要的头像,图片的处理.包括群和讨论组的类似QQ讨论组九宫格头像拼接也用GD库实现了. 但是,在用户量逐步涨上来的时候,效率上就满足不了.即便做了异步队列来异步生成讨论的头 ...

  9. centos安装ghostscript+PHP扩展imagick

    有一个功能:php将pdf转化成图片.用到了pdf-to-image这个库.但是这个库是依赖 Imagick和 Ghostscript 的. 所以想使用pdf-to-image(github地址:ht ...

  10. php5 安装imagick,CentOS 6.5编译安装PHP拓展imagick

    源码编译安装PHP运行环境的好处就是可以按需添加拓展,相对灵活.由于项目用到imagick这个拓展,所以稍微了解了一下,并作了笔记.本文主要记录CentOS 6.5下编译imagick拓展. 预热篇: ...

最新文章

  1. 干货|简单理解梯度下降及线性回归
  2. 世界隐形冠军比拼:德国1307家、美国366家、中国68家
  3. phantomjs 抓取html,javascript – 如何使用PhantomJS获取网站的HTML源代码
  4. bootstrap项目实例_SpringCloud Config 使用Git的应用实例
  5. 认识学习网络布线与数制转换
  6. 100例经典炒菜_Python3经典100例(②)
  7. LAB Color Space
  8. 剑指offer java -查找旋转数组的最小数字
  9. 计算机二级题百度云,题库吧百度_计算机二级 office 题库 百度云 谢谢_淘题吧
  10. Python xlrd、xlwt 用法说明
  11. 数组扁平化的方法汇总
  12. sql查询不定参数生成where子句不定参数查询
  13. 技术干货 | 基于 MindSpore 实现图像分割之平均表面距离
  14. 垃圾收集器面试总结(一)
  15. 【目标】新学期计划与目标
  16. vue.js 回显textarea入的空格和换行
  17. jQuery基础(二)
  18. python10个骚操作
  19. 哈工大软件构造期末复习(根据老师复习提纲整理)
  20. 06_基于树莓派wiringPi的温湿度采集实验

热门文章

  1. Java设计模式(四)行为型 设计模式
  2. 神通数据库适配 hibernate
  3. killer网卡服务器未运行,外星人killer control center服务未运行怎么解决?
  4. linux解决蓝牙和网卡,完全用Deepin Linux娱乐、工作、学习(3)-- 无线网卡及蓝牙设备驱动篇...
  5. 使用BindingSource连接数据库
  6. Java之常见异常 整理集合
  7. Java Se 、JavaEE、JavaME区别
  8. JAVA架构师之路-视频学习
  9. 黑客帝国1-3 1080P 35.9G 下载
  10. java工具类(六)根据经纬度计算距离