PHP合成图片,生成海报图,poster-editor使用说明

之前写过一篇使用Grafika插件生成海报图的文章,但是当我再次使用时,却发生了错误,回看Grafika文档,发现很久没更新了,不兼容新版的GD,所以改用了intervention/image插件来生成海报图。

但是后来需要对海报图上的文字位置进行位置调整,例如居中,intervention/image没办法很好的满足需求,需要自己计算文字显示区域大小,计算XY坐标,较为复杂。

如果需要完成以上的需求,可以使用antonlukin/poster-editor插件实现。

使用的插件
antonlukin/poster-editor 5.15

注意:antonlukin/poster-editor只能使用GD库

安装

composer require antonlukin/poster-editor

简单使用示例

try {$image = new PosterEditor\PosterEditor();$image->make('images/bridge.jpg')->fit(600, 600);$image->show();} catch(Exception $e) {echo $e->getMessage();
}

部分方法说明

创建实例

通过图片文件路径或者图片资源创建实例

$image = new PosterEditor\PosterEditor();$image->make(mixed $data)// 或者使用通过gd创建的图片资源
$image->set(instance $resourse)

也可以初始化一块画布,然后在画布上合成图片或文字

$image->canvas(int $width, int $height, array $options = array())

参数列表

  • width 画布宽度
  • height 画布高度
  • options
    • color 画布颜色,rgb数组或者十六进制颜色#ffffff
    • opacity 画布不透明度,0-100,数字越大透明度越高,0表示不透明,默认不透明
输出图片
  1. 直接输出图片
$image->show(string $format = null, int $quality = 90)
  1. 保存为文件
$image->save(string $path, int $quality = 90, string $format = null)
  • format 文件格式,png,gif,webp,jpg
  • quality 图片质量,0-100,100质量最好,文件最大。
  • path 图片文件路径

png格式是无损格式,quality只影响图片大小和压缩速度。

调整大小
  1. 重设宽高(忽略比例)
$image->resize(int $width, int $height)
  1. 按比例放大
$image->upsize(int $width = null, int $height = null)
  1. 按比例缩小
$image->downsize(int $width = null, int $height = null)
  1. 手动裁切
$image->crop(int $width, int $height, array $options = array())
  • width:裁切宽度
  • height:裁切高度
  • options:从哪个位置开始裁切
    • x
    • y
  1. 智能裁切
$image->fit(int $width, int $height, string $position = 'center')
  • width:裁切宽度
  • height:裁切高度
  • position:裁切位置,top-left、top、top-right、bottom-left、bottom、bottom-right、right、left、center
插入图片
$image->insert(mixed $data, array $options = array(), array &$boundary = array())
  • data:图片文件路径或者图片资源
  • options
    • x:x坐标
    • y:y坐标
    • opacity:画布不透明度,0-100,数字越大透明度越高,0表示不透明,默认不透明
  • boundary:此图片的位置和宽高
    • x:X坐标
    • y:Y坐标
    • width:文本框宽度
    • height:文本框高度
设置文字(主要功能)

文字功能是使用poster-editor的主要原因

$image->text(string $text, array $options = array(), array &$boundary = array())
  • text:文字内容
  • options
    • x:文本框起点的 X 坐标。
    • y:文本框起点的 Y 坐标。
    • width:文本框的宽度。
    • height:文本框的高度。
    • fontsize:字体大小,若字体过大,则会根据文本框进行缩小。
    • color:字体颜色。
    • lineheight:行高。
    • opacity:不透明度。0-100,数字越大透明度越高,0表示不透明,默认不透明。
    • horizontal:水平对齐,left,right,center,justify。
    • vertical:垂直对齐,left,right,center,justify。
    • fontpath:字体文件路径,.ttf 或 .otf格式。
    • debug:true则绘制文本框区域。
  • boundary:此文本框的位置和宽高
    • x:X坐标
    • y:Y坐标
    • width:文本框宽度
    • height:文本框高度

中文换行问题

经测试下来,插件可以通过检测空格,中文逗号,中文句号来进行换行

在这里插入图片描述

$image = new PosterEditor();
$image->canvas(500, 500, ['color'=>[213,138,138]]);
$image->text('我也像超出了平常旳自己,到了另一世界里。到了另一世界里.我爱热闹,也爱冷静,爱冷静爱冷:静爱冷静”爱群居,也爱独处。', ['x'=>50,'y'=>50,'width'=>350,'fontsize'=>50,'color'=>'#fcfcfc','opacity'=>10,'horizontal'=>'left','fontpath'=>$fontPathBold,'debug'=>true,
]);
$image->show('png');

中间包含文字的色块是开启了debug的效果

还能在图上画线、圆、矩形等,以及还有更多文字排版示例可以查看插件的github仓库文档

目前只能更改文字的大小、颜色、对齐这些信息,还不能给字体增加描边、阴影。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/59203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基于微信小程序的美食推荐系统(附源码,文档)

博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Linux的IP网路命令: 用于显示和操作网络接口(网络设备)的命令ip link详解

目录 一、概述 二、用法 1、基本语法 2、常用选项 3、常用参数 4、获取帮助 三、示例 1. 显示所有网络接口的信息 (1)命令 (2)输出示例 (3)实际操作 2. 启动网络接口 3. 停止网络接口 4. 更改…

【驱动】地平线X3交叉编译工具搭建、源码下载

1、交叉编译工具搭建 1)安装依赖包 sudo apt-get install -y build-essential make cmake libpcre3 libpcre3-dev bc bison \ flex python3-numpy mtd-utils zlib1g-dev debootstrap \ libdata-hexdumper-perl libncurses5-dev zip qemu-user-static \ curl repo git liblz4…

服务器上清理Docker容器运行日志的正确方法

为啥要清理服务器上docker容器的日志 因为是服务器的磁盘空间资源有限,由于docker容器在启动的时候没有限制,导致运行的docker容器随着时间的推移产生的日志越来越多,最后把服务磁盘资源耗尽,服务器的磁盘满了会导致服务器的应用无…

C语言 | Leetcode C语言题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; int countArrangement(int n) {int f[1 << n];memset(f, 0, sizeof(f));f[0] 1;for (int mask 1; mask < (1 << n); mask) {int num __builtin_popcount(mask);for (int i 0; i < n; i) {if (mask & (1 <<…

SpringBoot篇(自动装配原理)

目录 一、自动装配机制 1. 简介 2. 自动装配主要依靠三个核心的关键技术 3. run()方法加载启动类 4. 注解SpringBootApplication包含了多个注解 4.1 SpringBootConfiguration 4.2 ComponentScan 4.3 EnableAutoConfiguration 5. SpringBootApplication一共做了三件事 …

3D Gaussian Splatting代码详解(二):模型构建

3 模型构建 gaussians GaussianModel(dataset.sh_degree) 3.1 初始化函数 __init__ 构造函数 构造函数 __init__ 的主要作用是初始化 3D 高斯模型的各项参数和激活函数&#xff0c;用于生成 3D 空间中的高斯表示。 初始化球谐函数的参数&#xff1a; self.active_sh_degre…

HarmonyOS-权限管理

一. 权限分类 1. system_grant system_grant 为系统授权&#xff0c;无需询问用户&#xff0c;常用的权限包括网络请求、获取网络信息、获取wifi信息、获取传感器数据等。 /* system_grant&#xff08;系统授权&#xff09;*/static readonly INTERNET ohos.permission.INTE…

如何在 linux 中使用 /etc/fstab 挂载远程共享 ?

在 Linux 领域&#xff0c;高效的管理文件系统和数据存储对于用户和管理员来说&#xff0c;是一项基本技能。 有一种特别有用的技术涉及自动建立远程共享&#xff0c;允许无缝访问网络存储&#xff0c;就好像是本地的一样。 本指南将引导您完成使用 /etc/fstab 文件以自动远程…

Discussion can be found at https://github.com/pypa/pip/issues/10825

这个警告是说你正在使用的 PyPI 镜像&#xff08;在这个例子中是阿里云的镜像&#xff09;返回了一个不符合 HTML 5 标准的网页。这在未来的 pip 版本中可能会导致问题&#xff0c;因为 pip 计划在 22.2 版本中强制执行这一标准。 简单来说&#xff0c;虽然现在这个警告不会阻…

iOS用rime且导入自制输入方案

iPhone 16 的 cantonese 只能打传统汉字&#xff0c;没有繁简转换&#xff0c;m d sh d。考虑用「仓」输入法 [1] 使用 Rime 打字&#xff0c;且希望导入自制方案 [2]。 仓输入法有几种导入方案的方法&#xff0c;见 [3]&#xff0c;此处记录 wifi 上传法。准备工作&#xff1…

ts:常见的运算符

ts&#xff1a;常见的运算符 1 主要内容说明2 表格2.1 算数运算符2.2 赋值运算符2.3 比较运算符2.4 逻辑运算符2.5 位运算符2.6 三元运算符 3 例子3.1 位运算符3.1.1 源码1 &#xff08;位运算符&#xff09;3.1.2 源码1运行效果 3.结语4.定位日期 1 主要内容说明 ts中的各种运…

unity搭建场景学习

unity搭建场景学习 创建场景创建gameobject创建材质&#xff0c;用于给gameobject上色拖拽材质球上色上色原理设置多个材质方式设置贴图的方式 效果设置光滑度一些预览设置菜单渲染模型与碰撞模型网格渲染参数1. materials(材质)2. lighting(光照)3. reflection probes(反射探针…

『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC

『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC 文章目录 一. 『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC1. 介绍 二. 参考文献 一. 『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC 如何在 Ubuntu 22.04 上安装和配置 VNChttps://hub.docker.c…

xlwings,让excel飞起来!

excel已经成为必不可少的数据处理软件&#xff0c;几乎天天在用。python有很多支持操作excel的第三方库&#xff0c;xlwings是其中一个。 关于xlwings xlwings开源免费&#xff0c;能够非常方便的读写Excel文件中的数据&#xff0c;并且能够进行单元格格式的修改。 xlwings还…

03.DDD六边形架构

学习视频来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 什么是依赖DDD四层架构六边形架构代码实现 想要详细了解六边形架构&#xff0c;可以看我之前的一篇文章。是对六边形架构原文的翻…

在VS Code中操作MySQL数据库

【基础篇】 【小白专用24.5.26 已验证】VSCode下载和安装与配置PHP开发环境&#xff08;详细版&#xff09;_vscode php-CSDN博客 ~~~~~~~~~~~~~~~~~~~~~~~~~ 在VS Code中下载插件 Prettier SQL VSCode 和 MySQL : 随后在VS Code中点击Database图标 在连接界面输入MySQL数据库…

使用WebAssembly优化Web应用性能

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用WebAssembly优化Web应用性能 引言 WebAssembly 简介 安装工具 创建 WebAssembly 项目 编写 WebAssembly 代码 编译 WebAssem…

AI工具列表

AI写作工具 工具名称推测的https://地址笔灵AI写作https://ibiling.cn/Paperpalhttps://paperpal.com新华妙笔https://miaobi.xinhuaskl.com/讯飞写作https://iflytek.com墨狐AIhttps://inkfox-ai.com/火山写作https://www.writingo.net/橙篇https://chengpian.com&#xff08…

gbase8s之spring框架用druid中间件报语法错误

spring框架 调用druid中间件 时报这个错&#xff1a; MetaDataAccessException: Could not get Connection for extracting meta-data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception …