php中imagettftext()函数的使用

php中imagettftext()函数的使用,第1张

共有8个参数,缺一不可:

(1)$image 这个是画布资源,无需再解释;

(2)$size,官方文档的解释是,字体大小,其长度单位依赖于GD库的版本,对于GD1来说是像素,对于GD2来说是磅(point)。现在一般都是GD2了,那么这个磅究竟是什么意思呢?这涉及到字体设计的基本知识。

*** 作位图时,以像素位单位最精确合理,那么使用GD2库的时候,如何绘制大小为20像素的字呢?也就是多少磅才能等于20个像素呢?这必须通过分辨率才能计算出来,而问题是位图本身并没有分辨率的概念。

现在把问题返回来,如果给定$size=20磅,那么imageTtfText()绘制完成时,究竟会占用多少像素。无论如何,imageTtfText()最终还是要把文字绘制落实到具体的位图像素上。

这个问题确实非常棘手,此函数内部必然会使用某个分辨率PPI来计算被渲染的像素区域。而GD2库却没有提供任何让用户设置或者读取这个分辨率的方法。那么,我们只能动手测试了。使用不同的磅值绘制文字,然后测量文字占据的像素,通过公式:

PPI = (72像素数)/磅值。实验得出的结论是:

[plain] view plaincopyprint

1磅==>4像素, PPI=288

2磅==>5像素, PPI=180

3磅==>7像素, PPI=168

4磅==>8像素, PPI=144

5磅==>9像素, PPI=1296

6磅==>10像素, PPI=120

7磅==>11像素, PPI=11314285714286

8磅==>12像素, PPI=108

9磅==>14像素, PPI=112

10磅==>15像素, PPI=108

11磅==>16像素, PPI=10472727272727

12磅==>17像素, PPI=102

13磅==>18像素, PPI=99692307692308

14磅==>19像素, PPI=97714285714286

15磅==>21像素, PPI=1008

16磅==>22像素, PPI=99

17磅==>23像素, PPI=97411764705882

18磅==>25像素, PPI=100

19磅==>26像素, PPI=98526315789474

20磅==>27像素, PPI=972

21磅==>28像素, PPI=96

22磅==>29像素, PPI=94909090909091

23磅==>30像素, PPI=93913043478261

24磅==>32像素, PPI=96

25磅==>33像素, PPI=9504

26磅==>34像素, PPI=94153846153846

27磅==>35像素, PPI=93333333333333

28磅==>36像素, PPI=92571428571429

29磅==>38像素, PPI=94344827586207

30磅==>39像素, PPI=936

31磅==>40像素, PPI=92903225806452

32磅==>41像素, PPI=9225

33磅==>43像素, PPI=93818181818182

34磅==>44像素, PPI=93176470588235

35磅==>46像素, PPI=94628571428571

36磅==>47像素, PPI=94

37磅==>48像素, PPI=93405405405405

38磅==>48像素, PPI=90947368421053

39磅==>50像素, PPI=92307692307692

40磅==>51像素, PPI=918

41磅==>52像素, PPI=91317073170732

42磅==>53像素, PPI=90857142857143

43磅==>55像素, PPI=92093023255814

44磅==>56像素, PPI=91636363636364

45磅==>57像素, PPI=912

46磅==>58像素, PPI=90782608695652

47磅==>60像素, PPI=91914893617021

48磅==>62像素, PPI=93

49磅==>63像素, PPI=92571428571429

50磅==>63像素, PPI=9072

51磅==>64像素, PPI=90352941176471

52磅==>67像素, PPI=92769230769231

53磅==>68像素, PPI=92377358490566

54磅==>69像素, PPI=92

55磅==>70像素, PPI=91636363636364

56磅==>71像素, PPI=91285714285714

57磅==>72像素, PPI=90947368421053

58磅==>74像素, PPI=91862068965517

59磅==>75像素, PPI=91525423728814

60磅==>76像素, PPI=912

61磅==>77像素, PPI=90885245901639

62磅==>78像素, PPI=9058064516129

63磅==>79像素, PPI=90285714285714

64磅==>81像素, PPI=91125

65磅==>83像素, PPI=91938461538462

66磅==>84像素, PPI=91636363636364

67磅==>85像素, PPI=9134328358209

68磅==>86像素, PPI=91058823529412

69磅==>86像素, PPI=89739130434783

70磅==>88像素, PPI=90514285714286

71磅==>90像素, PPI=91267605633803

72磅==>91像素, PPI=91

73磅==>92像素, PPI=90739726027397

74磅==>93像素, PPI=90486486486486

1磅==>4像素, PPI=288

2磅==>5像素, PPI=180

3磅==>7像素, PPI=168

4磅==>8像素, PPI=144

5磅==>9像素, PPI=1296

6磅==>10像素, PPI=120

7磅==>11像素, PPI=11314285714286

8磅==>12像素, PPI=108

9磅==>14像素, PPI=112

10磅==>15像素, PPI=108

11磅==>16像素, PPI=10472727272727

12磅==>17像素, PPI=102

13磅==>18像素, PPI=99692307692308

14磅==>19像素, PPI=97714285714286

15磅==>21像素, PPI=1008

16磅==>22像素, PPI=99

17磅==>23像素, PPI=97411764705882

18磅==>25像素, PPI=100

19磅==>26像素, PPI=98526315789474

20磅==>27像素, PPI=972

21磅==>28像素, PPI=96

22磅==>29像素, PPI=94909090909091

23磅==>30像素, PPI=93913043478261

24磅==>32像素, PPI=96

25磅==>33像素, PPI=9504

26磅==>34像素, PPI=94153846153846

27磅==>35像素, PPI=93333333333333

28磅==>36像素, PPI=92571428571429

29磅==>38像素, PPI=94344827586207

30磅==>39像素, PPI=936

31磅==>40像素, PPI=92903225806452

32磅==>41像素, PPI=9225

33磅==>43像素, PPI=93818181818182

34磅==>44像素, PPI=93176470588235

35磅==>46像素, PPI=94628571428571

36磅==>47像素, PPI=94

37磅==>48像素, PPI=93405405405405

38磅==>48像素, PPI=90947368421053

39磅==>50像素, PPI=92307692307692

40磅==>51像素, PPI=918

41磅==>52像素, PPI=91317073170732

42磅==>53像素, PPI=90857142857143

43磅==>55像素, PPI=92093023255814

44磅==>56像素, PPI=91636363636364

45磅==>57像素, PPI=912

46磅==>58像素, PPI=90782608695652

47磅==>60像素, PPI=91914893617021

48磅==>62像素, PPI=93

49磅==>63像素, PPI=92571428571429

50磅==>63像素, PPI=9072

51磅==>64像素, PPI=90352941176471

52磅==>67像素, PPI=92769230769231

53磅==>68像素, PPI=92377358490566

54磅==>69像素, PPI=92

55磅==>70像素, PPI=91636363636364

56磅==>71像素, PPI=91285714285714

57磅==>72像素, PPI=90947368421053

58磅==>74像素, PPI=91862068965517

59磅==>75像素, PPI=91525423728814

60磅==>76像素, PPI=912

61磅==>77像素, PPI=90885245901639

62磅==>78像素, PPI=9058064516129

63磅==>79像素, PPI=90285714285714

64磅==>81像素, PPI=91125

65磅==>83像素, PPI=91938461538462

66磅==>84像素, PPI=91636363636364

67磅==>85像素, PPI=9134328358209

68磅==>86像素, PPI=91058823529412

69磅==>86像素, PPI=89739130434783

70磅==>88像素, PPI=90514285714286

71磅==>90像素, PPI=91267605633803

72磅==>91像素, PPI=91

73磅==>92像素, PPI=90739726027397

74磅==>93像素, PPI=90486486486486

可见当大于46磅时,PPI稳定在90,而小于46磅时,PPI一直在微变。

所以,如果你想绘制20个像素大小的字体,那么必须设置$size参数为:145磅。

另外需要注意的是,$size并不完全对应字体的显示大小,因为同样的$size,不同的字符占据的空间并不是一样的。例如,汉字“国”的宽度会比数字1的宽度大得多,对于标点符号,则更是这样,半角和全角符号也不同。

总之,使用imageTtfText()不可能精确控制到像素级别,只能大概。这也算是矢量字体的一个小缺陷。

(3)$angle是旋转角度。这个官网解释的比较清楚,需要说明有两点:一是角度单位是度而不是弧度,二是旋转的中心点就是参数$x,$y。

(4)$x,$y 被绘制字符串的第一个字符的基线点。单位是像素。这里涉及到字体设计的基本知识--基线。这个点绝对不是左上角,而具体是什么取决于所使用的字体是如何设计的。对于宋体、楷体、黑体等常见的字体中的汉字,这个点大概位于字体的左下部分;而对于英文字母和标点符号,则各不相同。如下图:

(5)$color 字体的颜色。

(6)$fontfile 字体文件。也就是包含trueType字体字模的文件,如楷体字体文件simkaittf。这种文件的格式是有标准规范的,而且与平台无关。所以可以直接把Windows系统的字体文件拷贝到Linux下使用。

(7)$text 要渲染的字符串。需要注意必须是UTF-8编码的字符串。说到字符串不得不提PHP的string数据类型。虽然名为string,其实PHP语言本身并不认识各种字符编码,它只是简单的把string看做是动态增长的“字节”数组,例如strlen()就是返回的字节数。而我们知道除了ASCII编码的字符和字节是相同的外,几乎没有其他字符编码中的字符对应一个字节,例如一个汉字的UTF-8编码占用3个字节。至于怎么解释其中的字符编码,需要专门的库函数如iconv_strlen()。如果字符串使用字面量,那么其所在的php源文件就必须编码为UTF-8存储。

尊敬的联想用户您好!

建议您参考以下步骤排除故障。

1、Windows XP系统设置屏幕分辨率的 *** 作方法:

11在系统桌面空白处点击鼠标右键,在d出的菜单中选择“属性”。如下图所示:

12在d出的显示属性对话框中,点击“设置”选项卡。然后在屏幕分辨率下,使用鼠标调整滑杆位置以便选择不同的分辨率(往左减小,往右增大),最后点击“确定”按钮。

13系统将会d出监视器设置对话框,提示是否需要保存这些设置。如果确认无误,点击“是(Y)”按钮即可完成屏幕分辨率的设置。如果显示未达到理想效果,可以点击“否(N)”取消。提醒:如果无法设置最佳分辨率,说明需要安装显卡驱动,可参考步骤3安装显卡驱动。

2、Windows 7系统设置屏幕分辨率的 *** 作方法:

21在系统桌面空白处点击鼠标右键,在d出的菜单中选择“屏幕分辨率”。如下图所示:

22在d出的更改显示器的外观对话框中,在分辨率后选择所需的分辨率,最后点击“确定”按钮。

23系统将会d出显示设置对话框,提示是否需要保留这些显示设置。如果确认无误,点击“保留更改(K)”按钮即可完成屏幕分辨率的设置。如果显示未达到理想效果,可以点击“还原(R)”取消。提醒:如果无法设置最佳分辨率,说明需要安装显卡驱动,可参考步骤3安装显卡驱动。

3、升级显卡驱动

31访问联想官方驱动支持频道>

33在 *** 作系统后选择当前主机运行的 *** 作系统版本

34然后展开“显卡”,根据主机实际的显卡厂商选择并点击如下图所示的“下载”。

35然后根据实际情况,将下载回来的显卡驱动解压并安装,安装后需要重新启动主机观察故障是否排除?提醒:某些情况下,也可以尝试通过显卡厂商的官方网站,下载公版显卡驱动通过设备管理器强行安装进行测试。公版显卡驱动下载页面可参考以下地址,不过需要注意公版驱动不支持AMD双显卡热切换机型。Intel官方网站:>

36同时,也可以通过联想官方网站,下载“联想乐驱动”软件安装。该软件安装成功后在桌面会生成该软件的快捷方式,双击图标启动该程序,程序会自动获取到您的主机编号,接下来程序会为您找到当前使用机器的驱动,如:主板,显卡,声卡,无线网卡等,您可以点击下载、安装按钮轻松完成驱动程序的下载安装。联想乐驱动软件下载:>

4、联系服务站如果上述 *** 作仍然无法解决或改善问题,我们建议您带上购机发票、主机、显示器送至就近的联想服务站进行进一步检测。联想官方服务网点查询:>

更多问题您可以咨询

idea论坛:>

Think论坛:>

联想乐社区:>

期待您满意的评价,感谢您对联想的支持,祝您生活愉快!

<php $screen = "<script>documentwrite(screenwidth);</script>";if ($screen >=1000) { >

<a data-type="3" data-tmpl="800x90" data-tmplid="195" data-rd="2" data-style="2" data-border="1" href="#"></a>

<php } else { >

<a data-type="13" data-tmpl="350x100" data-tmplid="212" data-rd="2" data-style="2" data-border="1" href="#"></a>

<php } >

自适应的弊端就是你做的时候考虑的要多些,不过这是趋势,没什么不好的。大致的做法就是你设置<div>、<img>的CSS样式宽度时多以百分比设置,别用固定的像素。

JQ行吗?

$(document)width();  然后传到后台接收咯

手册 ajax事件

这个是简单的例子:

JS:

<scritp>

$(function(){

    var H = $(document)width(); 

    $post("testphp",{h:H},function(data){

        alert(data);

    });

});

</script>

这里假设html和php是同目录

testphp

<php

    $h = $_POST['h'];    //这个就是接收的参数

    echo $h;die;

>

//具体的就不说明了,代码运行一次就明白了,访问html文件

破解版,严格来说这不属于一种授权版本,因为它是针对商业版、试用版、共享版这类有使用限制的软件进行二次开发之后形成的特殊版本,也就是说,使用者可以在没有任何经济付出的条件下无限制的使用该软件的全部功能。一般通过改写原软件、制作算号器、拦截注册信息等等方式实现。

就是相当于要付费的道具不用人民币买了,难的关卡被简化了,有点类似盗版。破解版游戏就是不要钱就可以玩或者不要钱就有游戏道具。

破解版游戏就是不要钱就可以玩或者不要钱就有游戏道具。

简单点说就原来需要付费的游戏,通过程序的更改破解后就可以免费玩。有时英文游戏变成中文游戏;或者游戏中有些漏洞、 *** 作不方便的地方通过程序改过来也叫破解。

以上就是关于php中imagettftext()函数的使用全部的内容,包括:php中imagettftext()函数的使用、屏幕分辨率无法调节,而且屏幕分成了几块大小不一的区域、php if 语句根据屏幕分辨率(电脑或手机)输出不同的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9529136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存