joey / pieced-img
Collage of words and pictures
v1.1
2019-06-13 07:43 UTC
Requires
- php: >=5.6
This package is auto-updated.
Last update: 2024-05-13 20:20:33 UTC
README
环境要求
PHP >= 5.6
GD扩展
介绍
这是一个文字和图片拼凑的类,常见的应用场景是生成分享海报
安装
composer require joey/pieced-img
示例
<?php
namespace Joey\PiecedImg\example;
use Joey\PiecedImg\drive\Img;
use Joey\PiecedImg\drive\PiecedImg;
use Joey\PiecedImg\drive\Text;
//合成一个文字
$font = __DIR__ . "/ttf/MSYH.TTC";//字体的路径这里要用绝对路径
$nickname = Text::marginTop(20)//上边距20
->align(Text::ALIGN_CENTER)//水平居中
->vertical(Text::ALIGN_START)//垂直 向上
->build("袅袅", $font);
//合成一个头像
$avatar = Img::align(Img::ALIGN_CENTER)//水平居中
->vertical(Img::ALIGN_START)//垂直 向上
->margin(80)//上下左右边距30
->build("img/avatar.jpg");//需要合成照片的地址
//输出到本地
PiecedImg::backgroundImage("img/background.png")
->merge($nickname)//拼凑 昵称
->merge($avatar)//拼凑 头像
->writeSave('./uploads/poster.png');//输出到本地
//输出到浏览器
header("Content-type : image/png");
PiecedImg::backgroundImage("img/background.png")
->merge($nickname)//拼凑 昵称
->merge($avatar)//拼凑 头像
->writeString();//输出到浏览器
//die();如果浏览器一堆乱码,则加上这句
输出到浏览器的图片
使用说明
因为PiecedImg用到了魔术方法所以对ide的支持很不友好,所以把所有方法列出来,以免还需查看源码.
公共方法
- margin(...$arg) //参数有1个,则上下左右边距都是参数一;参数有2个则上下边距和左右边距分别是参数一,参数二;参数有4个,则参数分辨对应,上右下左边距
- marginTop($arg1) //上边距为$arg1
- marginBottom($arg1) //下边距为$arg1
- marginRight($arg1) //右边距为$arg1
- marginLeft($arg1) //左边距为$arg1
- align($arg) //水平排列,默认Text::ALIGN_START;Text::ALIGN_START左对齐,ALIGN_CENTER居中,ALIGN_END右对齐
- vertical($arg) //垂直排列,默认Text::ALIGN_START;Text::ALIGN_START上对齐,ALIGN_CENTER居中,ALIGN_END下对齐
图片生成器
- opacity(...$arg) //图片的透明层度0-1;若0.5则为半透明
- build($arg1) //需要拼凑的图片路径,最后调用
文字生成器
- size($arg) //文字大小,默认18
- color($arg,$arg,$arg) //文字的颜色,如0,0,0表示黑色,默认黑色
- angle($arg,) //文字的角度,默认0
- build($arg1,$arg2) //$arg1:需要填写的文字,$arg2:字体的路径,需要绝对路径
生成图片
- backgroundImage($arg) //必须先静态调用,背景图
- merge($arg) //参数为图片生成器或者文字生成器,可调用多个,多个按照先后顺序合成
- writeString() //输出浏览器
- writeSave($arg1) //输出本地,$arg1表时存储的位置
注意事项
- 所有类都需要先静态调用在链式操作,如Text::size(27)->build($text,$font);这样做的好处是,第一不要new一个类出来,第二每条链式的参数都互不影响.
- 如果调用输出浏览器出现乱码,那么需要在结尾加上die();
- 字体的路径需要绝对路径可以__DIR__."/相对路径";
- 如果计算出来的元素坐标未负数,那么定位会初始化到0,0,比如元素比背景图大,尽量排除这种因素.
如果有BUG可以,发送邮箱liujunyi.coder@gmail.com,VX:ad19960906,发issues.