首页 » PHP教程 » php手册image技巧_php运用imagemagick 处理 图片剪切压缩合并插入文本等

php手册image技巧_php运用imagemagick 处理 图片剪切压缩合并插入文本等

访客 2024-12-15 0

扫一扫用手机浏览

文章目录 [+]

首先要提醒一下大家,每次通过imageMagic处理图片都会new一个工具出来,当图片处理好之后最好是把这个工具给销毁,它会占用cpu和内存,如果你不在乎这些小细节的话就当做我没有说,接下来进入正题。

图片宽高压缩:

php手册image技巧_php运用imagemagick 处理 图片剪切压缩合并插入文本等

通过调用api中的 thumbnailImage 方法,可以实现图片宽高设置,这个操作不会影响图片的质量,是同大小压缩。

php手册image技巧_php运用imagemagick 处理 图片剪切压缩合并插入文本等
(图片来自网络侵删)

$codeLogo = new \Imagick( '图片路径' );$codeLogo->thumbnailImage( '图片高','图片宽'); header("Content-Type: image/{$image->getImageFormat()}"); echo codeLogo;

图片存储大小压缩:

通过调用api中的 setImageCompressionQuality 方法,可以实现图片存储大小设置,缩放比例越小那么图片清晰度越差,但是图片存储大小会越小那么web加载的时候就越快,压缩率请根据实际情形进行调度。

$code = new \Imagick( '图片路径' );$code->setImageCompressionQuality('缩放比例');header("Content-Type: image/{$image->getImageFormat()}");echo $image->getImageBlob( );

图片合并:

通过imageMagick可以实现多个图片合并到一张图片中,但是在合并的时候须要根据被覆盖图片的高和宽来确定覆盖图片的xy坐标,获取被覆盖图片的高和宽可以通过方法 getImageGeometry 来获取图片属性,然后得到高和宽,然后进行定位打算,下边的代码是将覆盖图片水平、垂直居中。

$code = new \Imagick( '被覆盖图片路径');$codePro = $code->getImageGeometry();$codeWidth = $codePro['width'];$codeHeight = $codePro['height'];$codeLogo = new \Imagick( '覆盖图片路径' );$codeLogo->thumbnailImage(300,300);$codeLogo->roundCorners( 300, 300 ); // radio 圆角处理$code->compositeImage( $codeLogo, \imagick::COMPOSITE_DEFAULT , ( $codeWidth - 300)/2, ( $codeHeight - 300 )/2 );header("Content-Type: image/{$image->getImageFormat()}");echo $image->getImageBlob( );

插入文本:

插入文本你须要指定字体文件和字体位置,之后将你的笔墨塞到图片上去,你可以通过imageMagick对你的笔墨进行大小、字体、颜色进行调度,并且当你塞到图片的时候可以通过 Imagick::GRAVITY_NORTH 直接将笔墨定位为水平居中

$image = new \Imagick( '图片路径' );$draw = new \ImagickDraw();$draw->setFontSize( '字体大小' );$draw->setTextKerning( 1 ); // 设置文件间距$draw->setFont( '字体库路径' );$draw->setFontWeight( 100 ); // 字体粗体$draw->setFillColor( '#434343' ); // 字体颜色$draw->setFontFamily( "Palatino" );$draw->setGravity( \Imagick::GRAVITY_NORTH );$image->annotateImage( $draw, 0, 840, 0, '文本' ) ;header("Content-Type: image/{$image->getImageFormat()}");echo $image->getImageBlob( );

背景色透明:

通过 transparentPaintImage 设置背景透明。
这个函数有四个参数,按照顺序分别是 目标颜色,透明度,擦边值,是否全部渲染,紧张解释一下目标颜色,这个参数须要是色调值 rgba(238, 238, 238),而不是 white、black 这样的字符串。

$code = new \Imagick( '图片路径' );//设置输出的图片格式$code->setimageformat('png');//设置透明背景$code->transparentPaintImage(new \ImagickPixel( '目标颜色' ), 0, '10', 0);//直接输出到浏览器须要设置header,也可以将getImageBlob的内容加密成base64格式再返回给前端header("Content-Type: image/{$image->getImageFormat()}");echo $image->getImageBlob( );

有什么不对的可以在我的公众号留言

标签:

相关文章

介绍魔码,新时代的智能解码神器

随着科技的发展,我们的生活越来越离不开各种智能产品。在这些产品中,魔码作为一种新兴的智能解码技术,正逐渐走进我们的生活。本文将带您...

PHP教程 2024-12-17 阅读0 评论0

任意游,探索无限可能的虚拟世界之旅

随着科技的飞速发展,虚拟现实技术逐渐走进我们的生活。其中,任意游作为一款备受瞩目的虚拟现实游戏,以其独特的魅力吸引了大量玩家。本文...

PHP教程 2024-12-17 阅读0 评论0

企均大数据,新时代企业发展的智慧引擎

随着科技的飞速发展,大数据已经成为推动企业创新发展的重要驱动力。企均大数据作为我国大数据领域的佼佼者,凭借其强大的数据采集、处理、...

PHP教程 2024-12-17 阅读0 评论0