在PHP的水印生成过程中,许多时候不知道图片的尺寸,从而无法确定imagettftext中应该传入多大的字体。
2、从1了解,imagegettftext在GD2和GD1中使用的计量单位是不一样的。GD1使用的以像素单位,GD2则是为磅。
- 1磅==>4像素, PPI=288
- 2磅==>5像素, PPI=180
- 3磅==>7像素, PPI=168
- 4磅==>8像素, PPI=144
- 5磅==>9像素, PPI=129.6
- 6磅==>10像素, PPI=120
- 7磅==>11像素, PPI=113.14285714286
- 8磅==>12像素, PPI=108
- 9磅==>14像素, PPI=112
- 10磅==>15像素, PPI=108
- 11磅==>16像素, PPI=104.72727272727
- 12磅==>17像素, PPI=102
- 13磅==>18像素, PPI=99.692307692308
- 14磅==>19像素, PPI=97.714285714286
- 15磅==>21像素, PPI=100.8
- 16磅==>22像素, PPI=99
- 17磅==>23像素, PPI=97.411764705882
- 18磅==>25像素, PPI=100
- 19磅==>26像素, PPI=98.526315789474
- 20磅==>27像素, PPI=97.2
- 21磅==>28像素, PPI=96
- 22磅==>29像素, PPI=94.909090909091
- 23磅==>30像素, PPI=93.913043478261
- 24磅==>32像素, PPI=96
- 25磅==>33像素, PPI=95.04
- 26磅==>34像素, PPI=94.153846153846
- 27磅==>35像素, PPI=93.333333333333
- 28磅==>36像素, PPI=92.571428571429
- 29磅==>38像素, PPI=94.344827586207
- 30磅==>39像素, PPI=93.6
- 31磅==>40像素, PPI=92.903225806452
- 32磅==>41像素, PPI=92.25
- 33磅==>43像素, PPI=93.818181818182
- 34磅==>44像素, PPI=93.176470588235
- 35磅==>46像素, PPI=94.628571428571
- 36磅==>47像素, PPI=94
- 37磅==>48像素, PPI=93.405405405405
- 38磅==>48像素, PPI=90.947368421053
- 39磅==>50像素, PPI=92.307692307692
- 40磅==>51像素, PPI=91.8
- 41磅==>52像素, PPI=91.317073170732
- 42磅==>53像素, PPI=90.857142857143
- 43磅==>55像素, PPI=92.093023255814
- 44磅==>56像素, PPI=91.636363636364
- 45磅==>57像素, PPI=91.2
- 46磅==>58像素, PPI=90.782608695652
- 47磅==>60像素, PPI=91.914893617021
- 48磅==>62像素, PPI=93
- 49磅==>63像素, PPI=92.571428571429
- 50磅==>63像素, PPI=90.72
- 51磅==>64像素, PPI=90.352941176471
- 52磅==>67像素, PPI=92.769230769231
- 53磅==>68像素, PPI=92.377358490566
- 54磅==>69像素, PPI=92
- 55磅==>70像素, PPI=91.636363636364
- 56磅==>71像素, PPI=91.285714285714
- 57磅==>72像素, PPI=90.947368421053
- 58磅==>74像素, PPI=91.862068965517
- 59磅==>75像素, PPI=91.525423728814
- 60磅==>76像素, PPI=91.2
- 61磅==>77像素, PPI=90.885245901639
- 62磅==>78像素, PPI=90.58064516129
- 63磅==>79像素, PPI=90.285714285714
- 64磅==>81像素, PPI=91.125
- 65磅==>83像素, PPI=91.938461538462
- 66磅==>84像素, PPI=91.636363636364
- 67磅==>85像素, PPI=91.34328358209
- 68磅==>86像素, PPI=91.058823529412
- 69磅==>86像素, PPI=89.739130434783
- 70磅==>88像素, PPI=90.514285714286
- 71磅==>90像素, PPI=91.267605633803
- 72磅==>91像素, PPI=91
- 73磅==>92像素, PPI=90.739726027397
- 74磅==>93像素, PPI=90.486486486486
这里以GD2为例,写了一个粗略的方法转换方法。
/**
* @param text 水印文字
* @param file 图片路径
* @param percent 百分比
*/
function getfontSize($text,$file,$percent = 70){
$fileData = getimagesize($file); //获取图片尺寸$fileWidth = $fileData[0]; //获取文件宽度
$percent = $percent / 100; //转换成小数位
$fontsize = $fileWidth / ($percent * 1.5 * strlen($text)); //计算文字磅数 。 算法和1.5是在下通过粗略计算得出的。过程就不给了
return intval($fontsize); //从上面可以看出磅数是取整数,所以这里取整
}//end getfontSize()