gmagick+html2image实现网页快照.doc_第1页
gmagick+html2image实现网页快照.doc_第2页
gmagick+html2image实现网页快照.doc_第3页
gmagick+html2image实现网页快照.doc_第4页
gmagick+html2image实现网页快照.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

简介GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88中图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。通过使用OpenMP可是利用多线程进行图片处理,增强了通过扩展CPU提高处理能力。GraphicsMagick可以再绝大多数的平台上使用,Linux、Mac、Windows都没有问题。GraphicsMagick支持大图片的处理,并且已经做过GB级别的图像处理实验。GraphicsMagick能够动态的生成图片,特别适用于互联网的应用。可以用来处理调整尺寸、旋转、加亮、颜色调整、增加特效等方面。GaphicsMagick不仅支持命令行的模式,同时也支持C、C+、Perl、PHP、Tcl、Ruby等的调用。事实上,GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,下面就是两个之间的一些比较。比较模块,因为PHP接到请求后初始化资源,响应后释放一切的工作模式,在大负载的情况下,GD无疑会拖慢PHP,反过来说,ImageMagick和PHP完全是松耦合的关系,如果PHP使用命令行调用ImageMagick的话,那么甚至可以说没什么联系。ImageMagick享用OS的资源,给PHP提供服务.整理收集图片处理(GD、ImageMagick、GraphicsMagick)常用的图片处理工具有GD,ImageMagick,GraphicsMagick等等。 GD就是个阿斗,略过不提;ImageMagick是目前最流行的图片处理工具,它的功能非常丰富;GraphicsMagick的功能略逊于 ImageMagick,但是它的效率更强悍,就好比Apache和Nginx一样,一个功能更强,一个效率更胜。据说Flickr原来就用ImageMagick,后来改成了GraphicsMagick。似乎就是因为效率更好些。淘宝用于图片resize和水印的工具不是imagemagick而是graphicsmagick。Imagemagick与GD处理图片的优缺比较第一、用Imagemagick替换GD进行图片的处理,GD和ImageMagick相比,首先是功能上面有区别。第二、在处理结果,也就是画质上有区别。第三,最重要的,性能上有差距。关于性能比较,其实还是存在一点争议,有的测试结果指出,使用某些ImageMagick的API,处理速度反倒不如GD,有的测试结果也指出,少量图片的处理GD的速度也比ImageMagick要快,随着图片数量和大小的上升,ImageMagick基本不受影响。但是无论如何,在性能方面,ImageMagick有一个重要的优势:GD作为PHP的一个模块,因为PHP接到请求后初始化资源,响应后释放一切的工作模式,在大负载的情况下,GD无疑会拖慢PHP,反过来说,ImageMagick和PHP完全是松耦合的关系,如果PHP使用命令行调用ImageMagick的话,那么甚至可以说没什么联系。ImageMagick享用OS的资源,给PHP提供服务。GraphicsMagick安装yum install GraphicsMagick GraphicsMagick-develPHP扩展安装GraphicsMagick PHP扩展安装操作系统: Centos 5.6环境 : LAMP编程语言: PHP下载地址: Gmagick相关文档: Gmagick1 : 安装PHP扩展 gmagick-1.0.9# 安装扩展tar -zxvf gmagick-1.0.9b1.tgzcd gmagick-1.0.9b1/usr/local/php/bin/phpize./configure -with-php-config=/usr/local/php/bin/php-configmakemake install2 : 修改PHP.ini文件# 修改配置文件vi /usr/local/php/etc/php.ini# extension_dir = ./ 更改路径extension_dir = /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/gmagick.so# 开启gmagick扩展extension = gmagick.so# 重启Apache/usr/local/apache2/bin/apachectl restart3 : 显示php服务器的配置信息,查看扩展是否安装# 创建文件vi /usr/local/apache2/htdocs/index.php# 写入4.示例createImage($msgid,$msgtime); $return = ; if($imageFlag = true) $return = $this-fileName; /日志记录Logger:getLogger(dataengine.lottery.snapshot)-apps(snapshotSuccess)-info(json_encode(array(fileName=$this-fileName); return $return; /* * 创建快照 * * param string $id * param string $time */ function createImage($id,$time) if($id & $time) $return = array(); $this-fileName = $this-getDir($time)./.$id.$this-imageExt; $command = $this-getExecCommand($id,$this-fileName); if($command) $imageFlag = false; exec($command,$return); if(strpos($returncount($return)-1,Convert html to image succeeds) != false) $imageFlag = true; /生成水印 if($imageFlag) $waterFlag = $this-waterImage($this-fileName); return $imageFlag; /* * 获得exec命令 * param string $id * param string $fileName */ function getExecCommand($id,$fileName=) $command = ; $domain = ;/此处根据情况更改 $quality = 80; /快照质量 if($projectId & $fileName) $command = export DISPLAY=:1; ; $command .= cd $this-html2imagePath;./html2image ; if($quality 0 & $quality readImage($groundImage); $bgHeight = $bg-getImageHeight(); $bgWidth = $bg-getImageWidth(); /获取水印图的高,宽 if($this-waterImage & is_file($this-waterImage) $water = new Gmagick($this-waterImage); $waterHeight = $water-getImageHeight(); $waterWidth = $water-getImageWidth(); /如果背景图的高宽小于水印图的高宽则不加水印 if($bgHeight $waterHeight | $bgWidth waterImage) /水印位置随机 $waterPos = $this-getWaterPos($bgWidth,$bgHeight,$waterWidth,$waterHeight); $bg-compositeImage($water,1,$waterPosx,$waterPosy); if(!$bg-writeImage($groundImage) return FALSE; else /加文字水印 $waterTextInfo = array( textFont = 15, /文字大小 textColor= #FF0000, /文字颜色 textAlpha= 1, /填充透明度 textInfo = , /水印内容 ); $dw-setFontSize($waterTextInfotextFont); /$dw-setFillColor($waterTextInfotextColor); $dw-setFillOpacity(1); $x = abs(130 - $bgWidth); $y = abs(15 - $bgHeight); $dw-annotate($x,$y,$waterTextInfotextInfo); $dw-setTextEncoding(UTF-8); $bg-drawImage($dw); if(!$bg-writeImage($groundImage) return FALSE; catch(Exception $e) Logger:getLogger(dataengine.lottery.snapshot)-apps(exception)-info(json_encode($e-getMessage(); /* * 水印位置 * param $bgWidth * param $bgHeight * param $waterWidth * param $waterHeight */ function getWaterPos($bgWidth,$bgHeight,$waterWidth=,$waterHeight=) $posArr = array(); if($bgWidth & $bgHeight) if($waterWidth & $waterHeight) $posArrx = rand($waterWidth/2,$bgWidth-$waterWidth); $posArry = rand($waterHeight/2,$bgHeight-$waterHeight); else $posArrx = rand(1,$bgWidth); $posArry = rand(1,$bgHeight); return $posArr; /* * 获得目录名 * * param string $projectTime 方案时间 * 按年/月/日/时划分目录 * * return string */ function getDir($projectTime) $dirName = ; if($projectTime) $unixTime = str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论