[玩软件] LatticePHP-使用PHP生成点阵图
作者:CC下载站 日期:2024-03-29 09:07:54 浏览:51 分类:玩软件
入门
这是什么
LatticePHP是一个点阵图生成软件包,用于PHP生成点阵图。由于点阵图生成一般是嵌入式语言所需要的,而PHP几乎不使用,于是我开发了这一款冷门的软件包,希望能帮助你。
项目已经开源:Github地址
环境
PHP >= 7.1
安装
使用composer安装
composer require zmxy/lattice
或者前往GitHub仓库下载源文件,自行手动导入
使用
先创建一个画布
use Lattice\LatticePck\Lattice; $width = 296; $height = 128; $lattice = new Lattice(); $lattice->createBlankImage($width, $height);
这样子我们就创建了一个296X128的一个画布
接下来往上写字
$lattice->text('LatticePHP-使用PHP生成点阵图', [0, 0]);
效果如下
画一个矩形
use Lattice\LatticePck\LatticeImg; LatticeImg::Rectangle($lattice, 50, 50, [50, 50], 0, 1);
效果如下
画二维码
use Lattice\LatticePck\LatticeImg; $order = "http://weixin.qq.com/r/BRy0rI7EoNPfrcrP90kX"; LatticeImg::QrCode($lattice, $order, [0, 12, 'center'], "public/", 0);
输出HTML来看看效果
use Lattice\LatticePck\LatticeOutput; $latticeOutput = (new LatticeOutput($lattice)); echo $latticeOutput->getHTML();
完整Demo
require 'vendor/autoload.php'; use Lattice\LatticePck\Lattice; use Lattice\LatticePck\LatticeImg; use Lattice\LatticePck\LatticeOutput; $width = 296; $height = 128; $lattice = new Lattice(); $latticeOutput = (new LatticeOutput($lattice)); $lattice->createBlankImage($width, $height); // 坐标 $x = 6; $y = 6; $lattice->text('LatticePHP-使用PHP生成点阵图', [$x, $y, 'top-center']); // LatticeImg::Rectangle($lattice, 50, 50, [50, 50], 0, 1); $order = "http://weixin.qq.com/r/BRy0rI7EoNPfrcrP90kX"; LatticeImg::QrCode($lattice, $order, [0, 12, 'center'], "public/", 0); echo $latticeOutput->getHTML();
代码文档
画布
您在做任何操作之前起码得先创建一个画布。
use Lattice\LatticePck\Lattice; $width = 296; $height = 128; $lattice = new Lattice(); $lattice->createBlankImage($width, $height);
/** * 创建空白图片 * @param int $width * @param int $height * @param int $color 填充颜色 0.白 1.黑 */
字体
获取点阵字体
普通的字体因为加了锐角、美化是不能直接用来生成点阵图的,必须使用点阵字体
。但是这方面的市场非常小,所以做的人很少,仅有的几个还会收取高昂费用。
这里提供一个工具用来生成点阵字体。
需要注意的是,如果源字体不可商用,您也无法将这个点阵字体商用,请尊重版权。本文会用免费的宋体来演示。
这里面主要是设置字号和字体宽高度,宽高要保持8的倍数,比如12号字体宽高填16。
格式 bin 然后保存即可。
代码里使用
use Lattice\LatticePck\Lattice; $fontDraw = Lattice::getFontDraw(); $fontDraw->setFont('./font/st16_16', 16, 8);
这里第一个参数是字体路径,第二个是中文宽度,第三个是英文宽度,因为英文比中文短一半,所以设置为8。(设置英文宽度主要是去除多余空白,不然影响美观)
/** * 设置字体大小 * @param stirng $fontFileName 字体文件路径 * @param int $font_v 中文宽度 * @param int $font_e 英文宽度 * @return void */
颜色
LatticePHP
是用 1 表示黑色 0 表示白色 (后期可以考虑加入其他颜色)。本质上点阵图就是一串01010101
.
颜色反转
$lattice->colorReflection($textArr);
/** * 颜色反转 * @param array $textArr 点阵数组 * @return void */
您可以传入$lattice->image
,因为这个是整张画布,如这么做将会把整张画布颜色反转。
坐标偏移
所有绘制的图像需要设置X、Y坐标与偏移指令,例如:
[$x, $y, 'top-center']
除了top-center
,还有top-right
、top-left
、bottom-center
、bottom-left
、bottom-right
、center-right
、center
、center-left
意思应该懂吧,top-center
就是Y轴靠上,X轴居中,以此类推。
文本
use Lattice\LatticePck\Lattice; $lattice = new Lattice(); $lattice->text('LatticePHP-使用PHP生成点阵图', [$x, $y, 'top-center']);
/** * 写入文字 * @param string $text 文字 * @param array $xy xy坐标与偏移指令 * @param int $color 字体颜色 1.黑色 0.白色 * @param int $spacing 字间距 * @param int $font_bold 1 加粗 0 不加粗 * @param int $heightSpacing 1 去除上下空白 0 不去除 * @param int $getType 1 获取点阵数组 * @return array */
参数$getType
的意思是返回一个由01构成的数组。
例如:
图形
点
use Lattice\LatticePck\LatticeImg; LatticeImg::point($lattice, [0, 12]);
/** * 创建点 * @param Lattice $lattice Lattice对象 * @param array $xy XY坐标偏移指令 * @param int $color 点颜色 1.黑 0.白 默认为1 * @return void */
直线
use Lattice\LatticePck\LatticeImg; LatticeImg::Line($lattice, [[1, 1], [8, 8]]);
/** * 创建线 * @param Lattice $lattice Lattice对象 * @param array $xy XY坐标[[1, 1], [8, 8]] 不支持偏移指令 * @param int $color 线条颜色 1.黑 0.白 默认为1 * @return void */
矩形
use Lattice\LatticePck\LatticeImg; LatticeImg::Rectangle($lattice, $width, $height, [$x, $y]);
/** * 创建矩形 * @param Lattice $lattice Lattice对象 * @param int $width 宽度 * @param int $height 高度 * @param array $xy XY坐标偏移 * @param int $fillColor 填充颜色 0.白 1.黑 * @param int $borderSize 边框大小 * @param int $borderColor 边框颜色 * @return void */
插入自定义图片
use Lattice\LatticePck\LatticeImg; $lattice->insertImg($lattice, $filePath, [$x, $y]);
/** * 插入图片(只能是黑白) * @param Lattice $lattice 点阵类 * @param string $filePath 图片的文件路径 * @param array $xy 坐标偏移 * @param int $mode 模式 0.只读白色,其余为黑 1. 只读黑色,其余为白 2. 黑白都读,其余为灰(用2表示),默认模式为1 * @return void * @throws Exception */
条码
因为条码种类繁多,所以LatticePHP
内置了CodeItNow
来生成条码,先生成图片,然后再插入。
一维码
use Lattice\LatticePck\LatticeImg; $order = "112233"; LatticeImg::BarCode($lattice, $order, [$x, $y, 'top-center']);
/** * Barcode生成条纹码 * @param Lattice $lattice 点阵类 * @param string $text 内容字符串 * @param array $xy xy坐标 * @param string $barcodeType 条码格式 默认 BarcodeType::Code128 * @param int $thickness 高度厚度 默认18 * @param int $thick 厚度比例 默认1 * @param int $fillColor 条纹码颜色 默认1 * @param bool $delete 是否自动将生成的图片删除 默认true * @param string $filePath 文件路径 默认 public/images/ (结尾记得带/) * @param string $fileName 文件名 默认时间戳+随机数 * @return void */
二维码
use Lattice\LatticePck\LatticeImg; $order = "http://weixin.qq.com/r/BRy0rI7EoNPfrcrP90kX"; LatticeImg::QrCode($lattice, $order, [$x, $y, 'center']);
/** * Barcode生成二维码 * @param Lattice $lattice 点阵类 * @param string $text 字符串 * @param array $xy xy坐标 * @param int $size 尺寸 默认100 * @param bool $delete 是否自动将生成的图片删除 默认true * @param string $filePath 生成二维码的文件路径 默认 public/images/ (结尾记得带/) * @param string $fileName 生成二维码的文件名 默认时间戳+随机数 * @return void * @throws Exception */
输出画布
我们有时候需要预览画布,您可以通过LatticeOutput
这个工具类进行输出
use Lattice\LatticePck\Lattice; use Lattice\LatticePck\LatticeOutput; $width = 296; $height = 128; $lattice = new Lattice(); $latticeOutput = (new LatticeOutput($lattice)); $lattice->createBlankImage($width, $height); $order = "http://weixin.qq.com/r/BRy0rI7EoNPfrcrP90kX"; LatticeImg::QrCode($lattice, $order, [0, 12, 'center']);
输出HTML
echo $latticeOutput->getHTML();
输出数组
通过<pre>
这个标签可以格式化输出
echo '<pre>'; print_r($latticeOutput->getImageArray());
输出16进制
将图片的01
当做二进制转换为16进制
echo $latticeOutput->toHexa();
/** * 将二进制数据转换16进制数串的函数(并反转) * @param array $olbImage 点阵数组 默认整张画布 * @param bool $strrev 是否反转图片(将图片倒置并且竖直) * @return string $_32hexa */
其他
截取
有时候您插入了一个超过了整张画布的图片,它不会报错,但肯定会影响您的程序。您需要使用这个方法进行画布截取。
$lattice->interception();
这将会把超出画布的元素截取掉。
字符串换行
默认情况下一个字符串超出时不会换行,您可以通过这个函数进行换行
$address = "我是一个很长的地址,要被换行哦噢噢噢噢噢噢噢噢哦哦哦哦哦哦哦哦哦哦哦哦"; $addressArray = LatticeFont::strWrap($address, 48, 2);
/** * 字符串换行分割 * @param string $str 要被换行分割的字符串 * @param int $length 一行的长度, 英文长度 默认12 * @param int $hans_length 一个汉字等于多少个英文的宽度(GBK编码是2,UTF-8编码是3) 默认2 * @param string $append 尾部追加的字符串 默认为空 * @return array 字符串分割后的数组 */
ABABAB合并字符串
use Lattice\Utils\CString; CString::MergeBetween('AAAAA', 'BBBBB');
/** * 以类似ABABAB模式的方式合并两个字符串结果。 * @param string $str1 String A * @param string $str2 String B * @return string Merged string */
猜你还喜欢
- 04-19 [软件技巧] 5个在Chrome浏览器上恢复已删除的历史记录的顶级方法
- 03-29 [软件技巧] 剪映专业版怎么把两个草稿合在一起
- 03-29 [玩软件] Linux 虚拟机使用 xshell 连接 (debian、kali、CentOS)
- 03-29 [软件问题] 解决 win10 命令行下运行 python 弹出 Windows 应用商店
- 03-29 [软件技巧] Anaconda安装教程以及Anaconda和pip配置国内镜像
- 03-29 [玩软件] LatticePHP-使用PHP生成点阵图
- 03-29 [软件问题] chrome、Edge浏览器显示“您的浏览器受管理”是被植入病毒或其它程序了吗?
- 03-29 [环境问题] 为Nginx和Apache配置多版本PHP、切割多个conf文件
- 03-29 [软件玩法] 配置frp实现内网穿透
- 03-29 [软件玩法] VMware虚拟机安装MacOS系统教程
- 03-29 [软件技巧] frp 实现内网穿透(Windows 版)
- 03-27 [软件应用] 谷歌商店,可以访问了
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[少儿教育] 唐诗三百首微电影(全314集)·少儿学唐诗
[资料] 2025军队文职 公共课+专业课+真题+押题+面试【合集】
[课程] 《大师级航拍教程》63节课程视频 MP4格式 5.9G
[资料] 中医鬼才倪海厦全集完整版+资料全集
[课程] 聂佳判断推理绝版课程大集合【8G】
[电视剧] 芈月传 【全集81集全】【未删减版】【国语中字】【2015】【HD720P】【75G】
[电视剧] 封神榜 梁丽版 (1989) 共5集 480P国语无字 最贴近原著的一版【0.98 G】
[影视] 【雪山飞孤4个版本】【1985、1991、1999、2007】【1080P、720P】【中文字幕】【167.1G】
[资料] 24秋初中改版教材全集(全版本)[PDF]
[电影] 高分国剧《康熙王朝》(2001)4K 2160P 国语中字 全46集 78.2G
[书籍] 彭子益医书合集 [PDF/DOC]
[游戏] 《黑神话悟空》免安装学习版【全dlc整合完整版】+Steam游戏解锁+游戏修改工具!
[动画] 《名侦探柯南》名侦探柯南百万美元的五菱星 [TC] [MP4]
[动画] 2002《火影忍者》720集全【4K典藏版】+11部剧场版+OVA+漫画 内嵌简日字幕
[剧集] 《斯巴达克斯》1-4季合集 无删减版 1080P 内嵌简英特效字幕
[CG剧情] 《黑神话:悟空》158分钟CG完整剧情合集 4K120帧最高画质
[游戏] 黑神话悟空离线完整版+修改器
[电影] 《变形金刚系列》七部合集 [4K HDR 蓝光] 国英双语音轨 [内封精品特效字幕]【典藏版】235G
[图像处理] 光影魔术手v4.6.0.578绿色版
[动画] 西游记 (1999) 动画版 4K 全52集 高清修复版 童年回忆
[影视] 美国内战 4K蓝光原盘下载+高清MKV版/内战/帝国浩劫:美国内战(台)/美帝崩裂(港) 2024 Civil War 63.86G
[影视] 一命 3D 蓝光高清MKV版/切腹 / 切腹:武士之死 / Hara-Kiri: Death of a Samurai / Ichimei 2011 一命 13.6G
[影视] 爱情我你他 蓝光原盘下载+高清MKV版/你、我、他她他 2005 Me and You and Everyone We Know 23.2G
[影视] 穿越美国 蓝光原盘下载+高清MKV版/窈窕老爸 / 寻找他妈…的故事 2005 Transamerica 20.8G
[电影] 《黄飞鸿》全系列合集
[Android] 开罗游戏 ▎像素风格的模拟经营的游戏厂商安卓游戏大合集
[游戏合集] 要战便战 v0.9.107 免安装绿色中文版
[书籍] 彭子益医书合集 [PDF/DOC]
[资源] 精整2023年知识星球付费文合集136篇【PDF格式】
[系统]【黑果小兵】macOS Big Sur 11.0.1 20B50 正式版 with Clover 5126 黑苹果系统镜像下载
- 最新评论
-
找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢285552528 评论于:11-09 找了好久的资源bjzchzch12 评论于:11-07 谢谢分享感谢ppy2016 评论于:11-05 谢谢分享感谢ppy2016 评论于:11-05 有靳东!嘻嘻奥古斯都.凯撒 评论于:10-28 流星花园是F4处女作也是4人集体搭配的唯一一部!奥古斯都.凯撒 评论于:10-28 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢AAAAA 评论于:10-26 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢password63 评论于:10-26 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21
- 热门tag