php文字怎么居中,PHP图片文字合成居中
PHP处理图片
PHP使用GD库创建和处理包括GIF,PNG,jpef,wbmp以及xpm在内的多种格式的图像。
以下教程:图片合成文字,实现合成文字水平、垂直居中。
读取图片资源
imagecreatefrom 系列函数用于从文件或 URL 载入一幅图像,成功返回图像资源,失败则返回一个空字符串。
根据图片格式选用不同函数imagecreatefromgif():创建一块画布,并从 GIF 文件或 URL 地址载入一副图像
imagecreatefromjpeg():创建一块画布,并从 JPEG 文件或 URL 地址载入一副图像
imagecreatefrompng():创建一块画布,并从 PNG 文件或 URL 地址载入一副图像
imagecreatefromwbmp():创建一块画布,并从 WBMP 文件或 URL 地址载入一副图像
imagecreatefromstring():创建一块画布,并从字符串中的图像流新建一副图像
获取图片尺寸imagesx($image);
imagesy($image);
创建颜色imagecolorallocatealpha(resource $image , int $red , int $green , int $blue , int $alpha); // 带透明度
imagecolorallocate(resource $image , int $red , int $green , int $blue); // 普通
获取文字内容所需尺寸imagettfbbox ( float $size, float $angle, string $fontfile, string $text):array
取得使用 TrueType 字体的文本的范围。(种类型字体文件的扩展名是.ttf,类型代码是tfil。)
以上是每个步骤使用的关键函数说明。以下是完整代码示例。<?php
/**
* Created by PhpStorm.
* User: Siam
* Date: 2019/2/4 0004
* Time: 下午 10:58
*/
$main = imagecreatefromjpeg('./test.jpg');
$fontSize = 38;
$width = imagesx($main);
$height = imagesy($main);
//1.设置字体的路径
$font = "./t.ttf";
//2.填写水印内容
$content = "My name is Siam,中文是宣言";
//3.设置字体颜色和透明度
$color = imagecolorallocatealpha($main, 255, 255, 255, 0);
$fontBox = imagettfbbox($fontSize, 0, $font, $content);//获取文字所需的尺寸大小
//4.写入文字 (图片资源,字体大小,旋转角度,坐标x,坐标y,颜色,字体文件,内容)
imagettftext($main, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), ceil(($height - $fontBox[1] - $fontBox[7]) / 2), $color, $font, $content);
// 浏览器输出 也可以换成保存新图片资源
header("Content-type:jpg");
imagejpeg($main);
效果:
最关键的步骤是获取到文字内容所需的尺寸大小
原图的大小 - 文字内容的大小 = 剩余空白大小;
剩余空白大小 / 2 的效果就是自动居中。
我们可以在以上基础上封装成一个灵活的函数<?php
function imageAddText($path, $content, $x = 'auto', $y = 'auto', $fontSize = 38, $font = './t.ttf'){
$temp = array(1=>'gif', 2=>'jpeg', 3=>'png');
// 获取图片信息
$imageInfo = getimagesize($path);
$imageType = $temp[$imageInfo[2]];
$getfunc = "imagecreatefrom$imageType";
$outfunc = "image$imageType";
$resource = $getfunc($path);
$width = imagesx($resource);
$height = imagesy($resource);
$color = imagecolorallocatealpha($resource, 255, 255, 255, 0);
$fontBox = imagettfbbox($fontSize, 0, $font, $content);//文字水平居中实质
if ($x === 'auto'){
$x = ceil(($width - $fontBox[2]) / 2);
}
if ($y === 'auto'){
$y = ceil(($height - $fontBox[1] - $fontBox[7]) / 2);
}
imagettftext($resource, $fontSize, 0, $x, $y, $color, $font, $content);
/*输出图片*/
//浏览器输出
header("Content-type:".$imageType);
$outfunc($resource);
}
// 自动居中
// imageAddText('./test.jpg', 'My name is Siam,中文名是宣言');
// 声明x y值
// imageAddText('./test.jpg', 'My name is Siam,中文名是宣言',200);
// imageAddText('./test.jpg', 'My name is Siam,中文名是宣言','auto', '300');
Siam博客原文链接:→→→传送门
php文字怎么居中,PHP图片文字合成居中相关推荐
- Markdown更改字体、颜色、大小,设置文字背景色,调整图片大小设置居中,插入表格等方法
Markdown更改字体.颜色.大小,设置文字背景色,调整图片大小设置居中,插入表格等方法 Markdown 通过简单标记语法,使普通文本内容具有一定格式.但它本身不支持修改字体.字号与颜色等功能的. ...
- Java调用百度OCR文字识别API实现图片文字识别软件
java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...
- 图片文字提取,清华图片文字提取工具,wrod怎么提取图片文字,怎么把图片里面的文字提取?
在学习工作生活中,我们会遇到一些只能查看却无法下载的文档,如果想要使用里面的文本内容怎么办,我们只能一边看文档一边打字,但是这样的效率太低了.有没有其他的好的方式呢?比如将文档拍照或者干脆截图,再把图 ...
- java ocr api_Java调用百度OCR文字识别API实现图片文字识别软件
Java调用百度OCR文字识别API实现图片文字识别软件 原创isinple 发布于2019-01-06 13:35:59 阅读数 1296 收藏 展开 java_baidu_ocr Java调用百度 ...
- css图片跟文字居中,css 图片文字垂直居中
先来看张图片 相信很多css新手遇到过这种问题,就是当图片和文本显示在一行的时候,效果很奇葩,文字和图片没法对齐, 这时我们需要做的是: 1,先给块级元素设置 display: inline-bloc ...
- html怎么在图片上加文字_怎么把图片文字转换成word文档
我们在和别人交流的时候,有时候为了方便对方查看和理解,我们会使用文字图片进行交流,这是一种非常方便交流的形式.那如果我们想要将图片里的文字转换成Word文档应该怎么操作? 如果我们想要将图片识别为Wo ...
- python切割图片文字_Python+opencv 实现图片文字的分割的方法示例
Python+opencv 实现图片文字的分割的方法示例 发布时间:2020-08-26 03:28:37 来源:脚本之家 阅读:116 作者:坏小孩90 实现步骤: 1.通过水平投影对图形进行水平分 ...
- python读取图片文字-Python3实现获取图片文字里中文的方法分析
本文实例讲述了Python3实现获取图片文字里中文的方法.分享给大家供大家参考,具体如下: 一.运行环境 (1) win10 (2) pycharm (3) python 3.5 (4) pillow ...
- 【python 图片文字识别】pyocr图片文字识别
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 pyocr 官方网 ...
- python识别文字软件_|python图片文字识别扫描工具下载免费版 - 欧普软件下载
python图片文字识别扫描工具是一款文字识别软件,软件基于Python和百度识别接口设计而来,可快速识别图片中的文字,写入TXT文件,支持快捷键F1截屏,虽说是基于命令行的操作,但是操作也算简单,需 ...
最新文章
- Spring之HelloWorld再起
- Golang用body来get或post数据
- 并发异步处理队列 .NET 4.5+
- 【夯实Mysql基础】mysql explain执行计划详解
- 关于MOSS SDK的Web Content Management
- 2018.08.20高二互测
- dom4j-cookbook
- css资源网站收集推荐
- querydsl动态 sql_Spring data jpa 复杂动态查询方式总结
- html css . doc,html+CSS基础.doc
- 要想成功必须具备的九种手段
- linux分布式文件部署,Linux的企业-分布式文件系统mfs(moosefs)搭建与配置
- 鸿蒙系统手机开机,华为手机鸿蒙系统 OS 2.0 开机界面演示
- hive —— 分区表
- FreeRTOS学习笔记(11)——CPU使用率统计
- linux查看网络连接命令,linux查看网络链接状况命令之-netstat
- 雨点效果——HTML5之特效
- Spring5基础知识
- 「 LaTex 」写论文,作者旁添加ORCID
- 使用CMake构建/开始使用CMake