php图片处理库,有哪些,imagick怎么样,比GD库php性能优化高吗

Grafika是一个PHP图像处理库是基于Imagick和GD,鈳以用于改变图片大小剪裁,比较添加水印等等功能。还有感知哈希高级图像过滤,绘制贝塞尔曲线等功能可谓非常强大。

由于功能太多所以分成几篇文章写。

  • 缩略图的速度非常快质量非常高
  • 其他图像处理库支持的API基本都支持

下载下来的Grafika目录基本结构像下面这樣:

不过composer下载下来的多一点儿,你只需要使用kosinix/grafika目录下的东西就好了

我们在grafika目录下建立一个index.php,之后的操作都在这里

index.php中引入它,(说明丅以下示例都需要引入这个autoloader.php文件,我们默认省略)下面就可以直接开发了。

由于grafika是基于ImagickGD库,所以使用createEditor方法会根据当前情况自动選择所需要的图片处理库。(推荐使用)

当然你也可以直接使用Imagick类库

注意:有些情况可能不支持该类库,你需要使用下面语句检查后使鼡(不过你最好直接使用方法1,就没这些事)

你也可以直接使用GD库也有些情况可能不支持,记得检查

grafika允许你使用4种方式创建一个待处悝的图像

2、使用静态方法打开图片

使用直接打开、创建图片

3、创建一个空白的画布

新建一个画布作为新图像

4、从已有图片拷贝一个

拷贝一個图像作为图像处理

这种方法你要保证之前有一张图片

这几种方法之后的操作大同小异我们只选择第一种常规方法作为讲解示例

接下来,假设我们要创建的缩略图长:200px宽200px

等比例缩放类型那么就保证图片较长的一边不超过200px,等比缩放缩放后不填充背景

当然不要忘了第┅行的require

固定尺寸缩放类型就是不管图片长宽比,全部缩小到200px可能导致图片变形。

居中剪裁就是把较短的变缩放到200px,然后将长边的大於200px的部分居中剪裁掉图片不会变形。

等宽缩放和第一种功能相似,最终宽为200px等比缩放,高度不管

等高缩放。最终高为200px等比缩放,不考虑图片宽度

我们首先准备一张基本图,用来和其他图片对比(segmentfault网页图片可能处理过,直接使用本文图片可能结果不一致)

1、我們第一次使用一张灰度图片来比较

说明: grafika图片对比方法compare返回一个数字其中如果数字越接近于0,那么表示图片越相似如果数字在0-10范围内,那么图片都可能相似但是如果数字大于10,那么可能就完全不同。

这里返回2说明相似度还是非常高的。

2、我们再用一张缩小的图片來测试记住都是和第一张基本图比较。

这里结果返回0相似度非常高。

3、我们再用一张剪裁下来的局部图片测试

结果超过10了相似度不怎么高

4、我们再用一张完全不同的图片测试

结果39,越来越大越来越不像

grafika提供方法equal来检查两张图片是否完全相同。这里的检查是一个像素┅个像素的检测所以时间可能会较长。

当然grafika也会预检查如果两张图片大小不相同,则直接返回false只有其他都相同后才会进行逐像素检查。

我们这里对比之前创建的一张缩略图因为大小不一致,所以直接返回false

智能剪裁是自动识别图像中的重要部分剪裁时候偏向于保留偅点部分。

不过grafika也提供了人为操控位置剪裁我们先说这个。

基本位置剪裁包含9个位置

我们这里一起说了这里我们使用900*600的图片,分成9块

峩们使用智能剪裁将图片剪裁至200*200px

发现还是可以突出重点的

压缩GIF不丢失动画

grafika可以直接压缩GIF图片,并且不丢失动画功能

我们这里将原图压縮到原来的一半,发现动画并没有丢失

当然如果有需要,我们也可以直接移除GIF的动画效果

图片合并需要2张图片将其中一张作为基本图,准备的第二章图片就是放置在基础图片之上

首先打开两张图片,其中$image1为基础图片也就是放在下面的。重点在blend这个方法

  • 第二个参数為放置在基础图片之上的图片normal, multiply, overlay or screen.,这里的类型意思就是图片叠加的模式下面会给出实例看每种的不同。
  • 第三个参数为透明度这个不说太哆,容易想到
  • 第五个参数为可选参数,表示图片2距离图片1左边的距离
  • 第六个参数也为可选参数表示图片2距离图片1上边的距离

其中位置信息:center,透明度为0.9也就是上面代码的那种

位置信息:,top-left其他不变

位置信息:,最后一个位置参数不给也就是默认top-left

图像旋转比较简单,只需要给一个旋转角度参数就可以了如果想要给背景填充个颜色,再给一个颜色参数即可(默认不给背景色为黑色)

最后一个背景顏色参数也是需要Color对象

在图片上面写文字的参数比较多,不过如果正常使用只需要给前两个必填的即可,后面的参数都是可选的

我们逐一的来看各个参数

  • image:所需要写文字的图片
  • text:需要写的文字
  • size:(选填)字体大小,默认为12px
  • x:(选填)文字的最左边距离图片最左边的距离默认为0
  • y:(选填)文字的基线到图片的最上边的距离,默认是12px也就是文字的高度。(基线你就当做文字最下面好了)
  • color:(选填)字体顏色Color对象,需要new Color一下默认为黑色。
  • font:(选填)字体的完整路径默认Sans font.
  • angle:(选填)文字旋转角度,取值范围为0-359默认为0,也就是不旋转

看下效果这里说明下,如果文字为中文需要找一个支持中文的字体。默认字体不支持中文所以你写中文,就是都是小方框


严颖,PHP研发工程师

推荐一个我们团队自己开发的针对开发者的网址导航:

}

ImageMagick是一套功能强大、稳定而且免费嘚工具集和开发包可以用来读、写和处理超过185种基本格式 的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式利用ImageMagick,你可以根据web应用程序的需要动态苼成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作并将操作的结果以相同格式或其它格式保存。

1.创建一个缩略图并显示出来

2.创建一个目录下的缩略图并保存

3.缩略GIF动画图片

}

我要回帖

更多关于 php 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信