快速使用PHP图片处理库Grafika

1、概述
1.1、什么是Grafika

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

因为世界杯活动中使用到了该库,所以本文将以世界杯活动中的使用方法和步骤走起。

1.2、优点
  • 缩略图的速度非常快,质量非常高
  • 支持智能剪裁
  • 很好的支持GIF图片
  • 5种缩略图模式
  • 图像对比功能
  • 图像高级过滤功能
  • 图像混合
  • 其他图像处理库支持的API基本都支持
2、开始开发
2.1、安装
composer require kosinix/grafika:dev-master --prefer-dist
2.2、使用常用的功能类
use Grafika\Grafika;
use Grafika\Color;
2.3、创建Editors

Grafika通过静态方法createEditor来创建一个editor。它包含所有的图片处理方法。

$editor = Grafika::createEditor();
2.4、打开模板图片
$editor->open($share_guess, './res/img/activity/worldcup/share/share_guess.jpg');

image

2.4、打开二维码图片
$editor->open($share_qrcode, './res/img/activity/worldcup/share/share_qrcode.jpg');

image

2.5、将二维码图片合成到模板图片上
$editor->blend($share_guess, $share_qrcode, 'normal', 1, 'top-left', 269, 815); // 画二维码

参数说明

  • 第一个参数为模板图片
  • 第二个参数为二维码图片
  • 第三个参数为图片叠加模式:normal, multiply, overlay 或 screen
  • 第四个参数为透明度
  • 第五个参数为叠加位置,有10个选择,其中,前面9种为用户自定义叠加位置,而最后一个是智能叠加,由Grafika来判断摆放在哪里好。 top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right 和 smart
  • 第六个参数为可选参数,表示图片2距离图片1左边的距离
  • 第七个参数也为可选参数,表示图片2距离图片1上边的距离
2.6、将用户昵称合成到模板图片

合成文字要点

  • 字体库
  • 字体库是否支持字符
  • 文字颜色
  • 文字大小
  • 文字倾斜
  • 文字宽、高
  • 文字居中
  • 文字垂直方向定位

下面介绍如何将“ A Bin 竞猜成绩出色”,定位到模板图片的指定垂直位置并水平居中。

计算文字宽高等数据

$box = imagettfbbox(28, 3, './res/img/activity/worldcup/share/msyhbd.ttf', ' A Bin 竞猜成绩出色');
if (!$box)
    return false;
$min_x = min(array($box[0], $box[2], $box[4], $box[6]));
$max_x = max(array($box[0], $box[2], $box[4], $box[6]));
$min_y = min(array($box[1], $box[3], $box[5], $box[7]));
$max_y = max(array($box[1], $box[3], $box[5], $box[7]));
$width = $max_x - $min_x; // 宽
$height = $max_y - $min_y; // 高
$top = abs($min_y); // 左下角居顶部,参照坐标(0, 0)
$left = abs($min_x); // 左下角居左侧,参照坐标(0, 0)

image

计算文字在模板图片上的位置

已知:模板图片宽750px,垂直方向上,从400px处开始绘制文字,且水平方向上居中。

$x = round((750 - $width) / 2); // 居左
$y = 400 + round($top / 2); // 居上

在模板图片上绘制文字

$editor->text($share_guess, ' A Bin 竞猜成绩出色', 28, $x, $y, new Color("#ffffff"), './res/img/activity/worldcup/share/msyhbd.ttf', 3);

参数说明

  • 第一个参数为模板图片
  • 第二个参数为将要绘制的文字
  • 第三个参数为字体大小(选填)
  • 第四个参数为文字的最左边距离图片最左边的距离(选填)
  • 第五个参数为文字的基线到图片的最上边的距离,默认是12px,也就是文字的高度。(基线你就当做文字最下面好了)(选填)
  • 第六个参数为字体颜色,Color对象,需要new Color一下,默认为黑色。(选填)
  • 第七个参数为字体的完整路径,默认Sans font.(选填)
  • 第八个参数为文字旋转角度,取值范围为0-359,默认为0,也就是不旋转(选填)
2.7、保存编辑好的图片
$editor->save($share_guess, './res/img/activity/worldcup/shared/test.jpg', 'jpeg', 60); // 生成图片

参数说明

当第三个参数为"jpeg"时,第四个参数有效,且能控制图片质量。

image

3、结束

更多用法,可以通过下面获取

字体下载

点击下载微软雅黑字体

转载于:https://my.oschina.net/zobeen/blog/2249412

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值