PHP計算字符串真正的寬度和高度像素(圖片加文字水印示例)
更新時間:2023年02月25日 10:07:29 投稿:yin
這篇文章通過給圖片加文字水印示例來解釋PHP計算字符串真正的寬度和高度像素的方法。計算字符串用strlen()只能得到字符串長度,不是寬高像素,而根據字體的大小和所用字體計算出的才是字符串真正的寬高像素。
PHP計算字符串用strlen()只能得到字符串長度,不是寬高像素,使用到了php函數ImageTTFBBox(),就可以根據字體的大小和所用字體計算字符串的寬高像素。
ImageTTFBBox函數介紹
imagettfbbox() 計算并返回一個包圍著 TrueType 文本范圍的虛擬方框的像素大小。
語法
imagettfbbox ( float $size , float $angle , string $fontfile , string $text )
參數
| 參數 | 必需的 | 描述 |
|---|---|---|
| size | 是 | 像素單位的字體大小。 |
| angle | 是 | text 將被度量的角度大小。 |
| fontfile | 是 | TrueType 字體文件的文件名(可以是 URL)。根據 PHP 所使用的 GD 庫版本,可能嘗試搜索那些不是以 '/' 開頭的文件名并加上 '.ttf' 的后綴并搜索庫定義的字體路徑。 |
| text | 是 | 要度量的字符串。 |
返回值
返回一個含有 8 個單元的數組表示了文本外框的四個角:
- 0 左下角 X 位置
- 1 左下角 Y 位置
- 2 右下角 X 位置
- 3 右下角 Y 位置
- 4 右上角 X 位置
- 5 右上角 Y 位置
- 6 左上角 X 位置
- 7 左上角 Y 位置
這些點是相對于文本的而和角度無關,因此“左上角”指的是以水平方向看文字時其左上角。
本函數同時需要 GD 庫和 FreeType 庫。
圖片加文字水印示例
<?php
//指定圖片路徑
$img = trim($_POST['img']);
//獲取圖片信息
$info = getimagesize($img);
//獲取圖片擴展名
$type = image_type_to_extension($info[2],false);
//動態(tài)的把圖片導入內存中
$fun = "imagecreatefrom{$type}";
$image = $fun($img);
//指定字體類型
$font = '../ttfs/pingfang.ttf';
//指定字體顏色及透明度
$trans = intval($_POST['trans']); //水印字體的透明度
$color =imagecolorallocatealpha($image,255,255,0,$trans);
//指定字體內容及大小
$content= trim($_POST['content']);
$size= intval($_POST['size']);
//計算字符串寬高
$pos =imagettfbbox($size,0,$font, $content);
//字符串所占寬度
$str_width = $pos[2] -$pos[0];
//字符串所占高度
$str_height = $pos[5] -$pos[3];
//給圖片添加文字
$location =intval($_POST['location']); //水印的位置
switch ( $location )
{
case 1://左上角
imagettftext($image, $size, 0,
10,10+$size, $color, $font, $content);
break;
case 2://右上角
imagettftext($image, $size, 0,$width-$str_width-10, 10+$size,$color, $font,$content);
break;
case 3://左下角
imagettftext($image,$size, 0, 10,$height-10, $color, $font, $content);
break;
case4://右下角
imagettftext($image, $size, 0,$width-$str_width-10,$height-10, $color, $font,$content);
break;
case 5://正中心
imagettftext($image, $size, 0,$width/2-$str_width/2,$height/2-$str_height/2, $color, $font,$content);
break;
default:
imagettftext($image, 30, 0, 100, 100,$color, $font, $content);
break;
}
//創(chuàng)建存放圖片的文件夾
$lujing ='../attachment/images/';
if ( !is_dir( $lujing ) )
{
mkdir($lujing, 0777,true);
}
//保存合成后的圖片
imagejpeg($image,$lujing.'photo_'.time().'.jpg');
//銷毀圖片
imagedestroy($image);到此這篇關于PHP計算字符串真正的寬度和高度像素(圖片加文字水印示例)的文章就介紹到這了,更多相關PHP字符串寬高內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Centos 6.5下PHP 5.3安裝ffmpeg擴展的步驟詳解
大家都知道ffmpeg是一款視頻流的軟件了,我們在linux系統中可以安裝ffmpeg了,這篇文章主要介紹了在Centos 6.5下PHP 5.3安裝ffmpeg擴展的步驟,需要的朋友可以參考下。2017-03-03
攻克CakePHP(PHP中的Ruby On Rails框架)圖文介紹
CakePHP框架實例介紹分析。圖文并茂2008-10-10

