php 图像字体大小,77、PHP 图像处理之获得文字宽高属性&图片水印函数功能

这段代码展示了如何在PHP中通过GD库创建一个函数来添加水印。该函数检查GD库是否启用,目标图像是否存在且为图片,然后获取水印文字的宽高,目标图像的尺寸,并根据指定位置将水印文字添加到图像上。最后,它会保存带有水印的图像并返回结果。
摘要由CSDN通过智能技术生成

通过PHP获得水印文字宽高的函数:

宽:imagefontwidth($font);

高:imagefontheight($font);

$font是字体大小(1-5)。

下面是通过面向过程的方法实现添加水印功能的代码:

/*

* $target_img:目标图像;

* $font_content:水印文字内容;

* $font_size:水印文字大小

* $num:水印放置的位置

*/

function water($target_img,$font_content,$font_size,$num){

//首先判断GD库是否打开&&目标文件是否存在&&目标文件是否是一个图片

if(extension_loaded('gd') && file_exists($target_img) && getimagesize($target_img)){

//获取文字宽高

$font_width = imagefontwidth($font_size)*strlen($font_content);

$font_height = imagefontheight($font_size);

//获取目标图片宽高

$target_img_info = getimagesize($target_img);

$target_img_width = $target_img_info[0];

$target_img_height = $target_img_info[1];

//判断水印文字的宽高是否超出目标图像的宽高

if($font_width

//获得图片类型

$target_img_type = substr(image_type_to_extension($target_img_info[2]),1);

//打开目标图像

eval('$img = imagecreatefrom'.$target_img_type.'($target_img);');

//确认水印放置的位置

//宽度居中

$x_center = ceil(($target_img_width - $font_width)/2);

//高度居中

$y_center = ceil(($target_img_height - $font_height)/2);

//宽度之差

$x_difference = $target_img_width - $font_width;

//高度之差

$y_difference = $target_img_height - $font_height;

switch($num){

//左上角

case 1:

$x = $y =10;

break;

//中间顶部

case 2:

$x = $x_center;

$y = 10;

break;

//右上角

case 3:

$x = $x_difference;

$y = 10;

break;

//右中间

case 4:

$x = $x_difference;

$y = $y_center;

break;

//右下角

case 5:

$x = $x_difference;

$y = $y_difference;

break;

//中间底部

case 6:

$x = $x_center;

$y = $y_difference;

break;

//左下角

case 7:

$x = 10;

$y = $y_difference;

break;

//左中间

case 8:

$x = 10;

$y = $y_center;

break;

//正中间

case 9:

$x = $x_center;

$y = $y_center;

break;

default:

die('请重新选择水印放置位置');

exit();

}

imagestring($img, $font_size, $x, $y, $font_content, imagecolorallocate($img, 255, 255, 255));

header('Content-type:image/jpeg');

imagejpeg($img,$target_img,100);

}else{

return false;

exit();

}

return true;

}else{

return false;

}

}

water('test.jpg','baidu',5,9);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值