今天由于用GD画图, 需要把一段文字在一个框内居中, 但是文字的宽度如果用strlen($str) * $font_size来计算的话, 由于文字不是等宽高的, 所以会导致偏离, 最后选用的GD库的imagettfbbox()函数, 其原型如下

array ImageTTFBBox(int size, int angle, string fontfile, string text);

其中返回一个数组, 有八个元素, 描述了四个角的坐标

0     左下角 X 位置

1     左下角 Y 位置

2     右下角 X 位置

3     右下角 Y 位置

4     右上角 X 位置

5     右上角 Y 位置

6     左上角 X 位置

7     左上角 Y 位置

$pos = imagettfbbox(self::FONT_SIZE , 0, self::FONT_FILE, $name);

其中self::FONT_SIZE、self::FONT_FILE分别为类中配置的字体大小和所用字体

字符串所占宽度为:

$pos[2] - $pos[0]

字符串所占高度为:

$pos[5] - $pos[3]

原文:http://www.cnblogs.com/JohnABC/p/3840320.html

php排字符串的高低位怎么区分,PHP-根据字符串和所用字体计算字符串所占宽高...相关推荐

  1. 定义长方体类,数据成员有长、宽、高,成员函数有带默认形参值的构造函数(默认长宽高分别为2.5、3.4、2)、计算体积函数,分别构造默认对象和长宽高分别为6.25、4.8、5.2的对象,输出各对象的体积

    定义长方体类,数据成员有长.宽.高,成员函数有带默认形参值的构造函数(默认长宽高分别为2.5.3.4.2).计算体积函数,分别构造默认对象和长宽高分别为6.25.4.8.5.2的对象,输出各对象的体积 ...

  2. 计算html的高度,html计算各对象的宽高

    Window对象属性ScreenLeft/ScreenTop/ScreenX/ScreenY只读整数,声明了窗口的左上角在屏幕上的 x 坐标 和 y 坐标. /** * 获取屏幕的宽度 * @para ...

  3. 利用flex布局在父元素和子元素宽高不明的情况下设置某一子元素剩余父元素的宽高

    如题,本人经常设置宽高都是这种,先通过js获取父元素的宽高,别的子元素的宽高.再通过js赋值 this.height = this.$refs.xxx.offsetHeight - this.$ref ...

  4. 图片等比例缩放算法(计算缩放后的宽高)

    让图片能够自适应父容器的宽高,并且保证图片不变形不溢出,那么就需要对图片进行等比例缩放,拿到缩放后的宽高重新赋值即可,具体算法如下: // 分别传入图片宽高.父容器宽高 const transform ...

  5. 第三周任务四:计算长方体的长宽高

    /* (程序头部注释开始)* 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称: * 作 者: 田 ...

  6. padding 不占宽高_不占地方的复式楼室内电梯,极致微型,节电省力颜值高

    现在藏身于高楼之间的小户型复式楼是越来越精巧,屋内功能越来越齐全,有些复式楼内甚至还安装了电梯.这种小到极致的微型电梯不仅不占地方,私密性好,载重量大,还节电省力颜值高,为小型别墅无障碍出行提供了不少 ...

  7. H5 canvas的 width、height 与style中宽高的区别

    Canvas 的width height属性 1.当使用width height属性时,显示正常不会被拉伸:如下 <canvas id="mycanvas" width=&q ...

  8. java精确测量文本高度_Android精确测量文本宽高及基线位置的方法

    前言 笔者最近在做一款弹幕控件,里面涉及到绘制文本,以及文本边框.而绘制文本边框需要知道文本的左边位置,上边位置,以及文本的宽高. 通常来说,使用 Canvas 绘制文本,可以通过画笔 Paint 来 ...

  9. 设置行内元素宽高和背景色后,行内元素文本不水平垂直居中解决方案

    前言 行内元素:指在同一行内不自动换行,可以和其他行内元素在同一水平的元素,不可以设置宽高. 行内元素设置宽高:行内元素想要设置宽高,需要用display:inline-block设置(详解如下表). ...

最新文章

  1. Codeforces 809A - Do you want a date?(数学+排序)
  2. leetcode 149. Max Points on a Line |149. 直线上最多的点数(Java)
  3. 深入显出谈Java的发展历程及语言特点
  4. 【java】java boolean 源码分析
  5. Ubuntu20.04搭建ftp服务(亲测通过)
  6. mysql指令按顺序排列_MySQL 排序 | 菜鸟教程
  7. 代码英雄之云间战争:寡头时代,路在何方?
  8. 探讨OSPF次优路由选择
  9. pycharm读取CSV文件
  10. 计算机打印机端口号,网络打印机端口号.doc
  11. 中国余数定理c语言pta,密码学基础——辗转相除法,费马小定理,欧拉定理,裴蜀定理,中国剩余定理...
  12. 移动硬盘文件丢失要如何找回呢?
  13. 用Vue制作图片翻面效果
  14. Nginx的常用配置
  15. 干货!最全羽毛球技术动态分解gif图
  16. (12)WLAN体系结构及各层的主要功能
  17. 操作系统原理——第2章 操作系统概述
  18. C语言基本数据类型输入输出格式
  19. java计算机毕业设计基于springboo+vue的幼儿园管理系统
  20. vu16和u16的区别 volatile关键字的用法简介

热门文章

  1. 解决linux ssh客户端SSH连接linux服务器很慢的问题
  2. 计算机与计算科学是属什么专业,被录取到信息与计算科学专业,这个专业什么性质,发展前景如何?...
  3. css3学习 之 css选择器(css3 属性选择器)
  4. 用JS来切换CSS,很好很简单
  5. 八数码 poj 1077 广搜 A* IDA*
  6. golang应用部署
  7. redis的key和value限制
  8. C++虚函数的实现方式
  9. vector的resize()和reserve()函数
  10. 暗杀TIME-WAIT