PHP之添加文字水印,两端文字分别设置不同的样式,支持透明度

php 复制代码
/**
 * 给图片添加文字水印 可控制字体颜色透明度,默认是居中
 * @param string $imagePath 图片地址
 * @param string $outputPath 新图片地址 默认使用$imgurl
 * @param string $textArray 水印文字
 * @param int $fontSize 字体大小
 * @param string $fontPath 字体文件路径
 * @param int $fontSize 字体大小
 * @return boolean
 */
function addTextWatermark($imagePath, $outputPath, $textArray, $fontPath = '', $fontSize = 14)
{
    $fontPath = $fontPath ?: dirname(dirname(dirname(dirname(__FILE__)))) . "/images/fonts/msyh.ttc";
    // 获取图片信息
    $imageInfo = getimagesize($imagePath);
    $imageWidth = $imageInfo[0];
    $imageHeight = $imageInfo[1];

    // 创建图片资源
    $image = imagecreatefromstring(file_get_contents($imagePath));

    // 设置水印文字颜色和字体大小
    $textColor = imagecolorallocatealpha($image, 255, 255, 255, 60); // 白色,透明度为100
    $textColorTitle = imagecolorallocate($image, 255, 255, 255); // 白色
    $textSpacing = 10; // 间隔值

    $textName = $textArray['name'];
    $textTitle = $textArray['title'];
    // 计算文字水印的宽度和高度

    $textBoundingBoxName = imagettfbbox($fontSize, 0, $fontPath, $textName);
    $textWidthName = $textBoundingBoxName[2] - $textBoundingBoxName[0];
    $textHeightName = $textBoundingBoxName[1] - $textBoundingBoxName[7];

    $textBoundingBoxTitle = imagettfbbox($fontSize, 0, $fontPath, $textTitle);
    $textWidthTitle = $textBoundingBoxTitle[2] - $textBoundingBoxTitle[0];
    $textHeightTitle = $textBoundingBoxTitle[1] - $textBoundingBoxTitle[7];

    // 计算水印文字的位置
    $xName = ($imageWidth - $textWidthName - $textWidthTitle - $textSpacing) / 2;
    $yName = ($imageHeight + $textHeightName) / 2;
    $xTitle = $xName + $textWidthName + $textSpacing;
    $yTitle = ($imageHeight + $textHeightTitle) / 2;

    // 添加水印文字
    imagettftext($image, $fontSize, 0, $xName, $yName, $textColor, $fontPath, $textName);
    imagettftext($image, $fontSize, 0, $xTitle, $yTitle, $textColorTitle, $fontPath, $textTitle);

    // 保存图片
    imagepng($image, $outputPath);

    // 释放图片资源
    imagedestroy($image);
}
php 复制代码
$imagePath = '../../image/up_image/20231214/231214551024943405.jpg';
$outputPath = '../../image/up_image/20231213/' . imgSuiYin('231214551024943405.jpg');
$textArray = array('name' => '@急急急', 'title' => '爱看');

addTextWatermark($imagePath, $outputPath, $textArray);
相关推荐
许苑向上27 分钟前
Java八股文(下)
java·开发语言
菜鸟一枚在这32 分钟前
深入解析设计模式之单例模式
开发语言·javascript·单例模式
独孤求败Ace35 分钟前
第44天:Web开发-JavaEE应用&反射机制&类加载器&利用链&成员变量&构造方法&抽象方法
java·开发语言
计算机-秋大田1 小时前
基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)
java·开发语言·spring boot·后端·spring·课程设计
matlabgoodboy1 小时前
Matlab代编电气仿真电力电子电机控制自动化新能源微电网储能能量
开发语言·matlab·自动化
镰圈量化1 小时前
当电脑上有几个python版本Vscode选择特定版本python
开发语言·vscode·python
背太阳的牧羊人2 小时前
RAG检索中使用一个 长上下文重排序器(Long Context Reorder) 对检索到的文档进行进一步的处理和排序,优化输出顺序
开发语言·人工智能·python·langchain·rag
ITPUB-微风2 小时前
美团MTSQL特性解析:技术深度与应用广度的完美结合
java·服务器·开发语言
Want5952 小时前
C/C++跳动的爱心
c语言·开发语言·c++
水瓶丫头站住2 小时前
Qt中QDockWidget的使用方式
开发语言·qt