/*
@$originalImage => 原始图片
@$waterPos => 水印位置
@$waterImage => 水印图片
@$waterText => 水印文字
@$textFont => 文字大小
@$textColor => 文字顔色
*/
function imageWaterMark($originalImage, $waterPos = 0, $waterImage = '', $waterText = '', $textFont = 5, $textColor = '#FFFFFF')
{
$isWaterImage = FALSE;
//从水印图片文件新建一幅图像
if(!empty($waterImage) && file_exists($waterImage)) {
$isWaterImage = TRUE;
$waterImageInfo = getimagesize($waterImage);
$waterImageWidth = $waterImageInfo[0];
$waterImageHeight = $waterImageInfo[1];
switch ($waterImageInfo[2]) {
case 1:
$waterIm = @imagecreatefromgif($waterImage); break;
case 2:
$waterIm = @imagecreatefromjpeg($waterImage); break;
case 3:
$waterIm = @imagecreatefrompng($waterImage); break;
default:;
}
}
//从源图片文件新建一幅图像
if(!empty($originalImage) && file_exists($originalImage)) {
$originalImageInfo = getimagesize($originalImage);
$originalImageWidth = $originalImageInfo[0];
$originalImageHeight = $originalImageInfo[1];
switch ($originalImageInfo[2]) {
case 1:
$originalIm = @imagecreatefromgif($originalImage); break;
case 2:
$originalIm = @imagecreatefromjpeg($originalImage); break;
case 3:
$originalIm = @imagecreatefrompng($originalImage); break;
default:;
}
}
//$w、$h是水印图片或水印文字的宽高度
if($isWaterImage) {
$w = $waterImageWidth;
$h = $waterImageHeight;
$label = "图片的";
} else {
$temp = imagettfbbox(ceil($textFont * 2.5), 0, 'font/SG16.TTF', $waterText);
$w = $temp[2] - $temp[6];
$h = $temp[3] - $temp[7];
$label = "文字区域";
unset($temp);
}
if( ($originalImageWidth < $w) || ($originalImageHeight < $h) ) {
return;
}
switch($waterPos) {
case 0://随机
$posX = rand(0, ($originalImageWidth - $w));
$posY = rand(0, ($originalImageHeight - $h));
break;
case 1://1为顶端居左
$posX = 0;
$posY = 0;
break;
case 2://2为顶端居中
$posX = ($originalImageWidth - $w) / 2;
$posY = 0;
break;
case 3://3为顶端居右
$posX = $originalImageWidth - $w;
$posY = 0;
break;
case 4://4为中部居左
$posX = 0;
$posY = ($originalImageHeight - $h) / 2;
break;
case 5://5为中部居中
$posX = ($originalImageWidth - $w) / 2;
$posY = ($originalImageHeight - $h) / 2;
break;
case 6://6为中部居右
$posX = $originalImageWidth - $w;
$posY = ($originalImageHeight - $h) / 2;
break;
case 7://7为底端居左
$posX = 0;
$posY = $originalImageHeight - $h;
break;
case 8://8为底端居中
$posX = ($originalImageWidth - $w) / 2;
$posY = $originalImageHeight - $h;
break;
case 9://9为底端居右
$posX = $originalImageWidth - $w;
$posY = $originalImageHeight - $h;
break;
default://随机
$posX = rand(0,($originalImageWidth - $w));
$posY = rand(0,($originalImageHeight - $h));
break;
}
//将水印图片或文字画到源图上
if($isWaterImage) {
imagecopy($originalIm, $waterIm, $posX, $posY, 0, 0, $waterImageWidth, $waterImageHeight);
} else {
if( !empty($textColor) && (strlen($textColor) == 7) ) {
$r = hexdec(substr($textColor, 1, 2));
$g = hexdec(substr($textColor, 3, 2));
$b = hexdec(substr($textColor, 5));
} else {
$r = 255;
$g = 255;
$b = 255;
}
imagestring( $originalIm, $textFont, $posX, $posY, $waterText, imagecolorallocate($originalIm, $r, $g, $b));
}
//生成水印后的图片
@unlink($originalImage);
switch ($originalImageInfo[2]) {
case 1:
imagegif($originalIm, $originalImage); break;
case 2:
imagejpeg($originalIm, $originalImage); break;
case 3:
imagepng($originalIm, $originalImage); break;
default:;
}
//销毁图像
imagedestroy($waterIm);
imagedestroy($originalIm);
}
分享到:
相关推荐
介绍一个php为图片添加水印函数类(适用于pngjpggif格式), 1:顶部居左, 2:顶部居右, 3:居中, 4:底部局左, 5:底部居右 透明度 -- 0:完全透明, 100:完全不透明 成功 -- 加水印后的新图片地址 ...
要给图片增加透明文字水印,可以按照以下步骤进行操作: 导入所需的库: 使用PIL库(Python Imaging Library)来处理图像。 打开原始图片: 使用Image.open()函数打开需要添加水印的图片。 创建水印: 使用Image...
opencv初学者 制作具有透明度的水印文字,把文字转换为图片进行水印 透明度设置
为图片添加水印也是图片处理中...如果制作图片水印,就需要先了解一下GD库中的imagecopy()函数,能复制图片的一部分。该函数的原型如下所示: 复制代码 代码如下: bool imagecopy(resource dst_im,resource src_im,int
PHP实现给图片加文字水印 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+... 2、文本编辑器:Sublime 3。 二、主要技术 本案例主要使用PHP 7中的图形函数来实现给图片添加文字水印的功能。
本例子为引用雷霄骅博士《最简单的基于FFmpeg的AVfilter例子(水印叠加)》例子,进行了改进。(原例子对解码后的帧没有做swscale处理,导致有些宽度不是32的整数倍的视频解码后花屏。本例子在原例子的基础上针对...
主要介绍了Asp.net简单实现给图片增加文字水印,需要的朋友可以参考下
对于内部分享的图片资源,您可通过文字盲水印将访问方的信息在请求图片时添加至图片中,当资源泄露后可通过流传出的资源图提取出盲水印,进而得到泄露方信息。 注意:您不仅在云函数中可以使用该扩展能力,也可以在...
1.清晰文字边缘(文字水印); 2.图片旋转加水印; 3.水印位置旋转控制精准度; 4.原图自定义删除; 5.图像亮度、对比度、RGB颜色值的调整; 6.可获取生成后的图片路径; 7.图片无损生成; 8.水印文字阴影禁启用; 9....
在php中,水印的实现通常使用imagecopymerge()函数,既可以完成水印的添加,又可以设置水印合并的程度。
1.新增清晰文字边缘(文字水印); 2.新增图片旋转加水印; 3.修复水印位置旋转控制的精准度; 4.新增原图自定义删除; 5.新增图像亮度、对比度、RGB颜色值的调整; 6.新增可获取生成后的图片路径; 7.修复图片无损...
1、介绍PHP水印原理和流程 2、ImageCreateFrom* 图片载入函数 imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromwbmp imagecreatefromstring 3、imagecopy 图片合并函数 4、...
批量二维码识别、批量二维码生成、表格数据汇总、全自动检索录入、数据采集大师、批量改图片大小、批量图片导入、批量图片导出、批量导图入批注、图片查询、批量图片排序大师、批量图片格式转换、批量文字水印与Logo...
1、介绍PHP水印原理和流程2、ImageCreateFrom* 图片载入函数 imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromwbmp imagecreatefromstring3、imagecopy 图片合并函数4、...
软件介绍 1、介绍PHP水印原理和流程 2、ImageCreateFrom* 图片载入函数 imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromwbmp imagecreatefromstring 3、imagecopy ...
图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)代码有点长,但不复杂。
ThinkPHP 图片处理函数,需要文字水印字体,可在windows下 控制面板 > 大图标(右上角) > 字体 找到需要的字体 /** * 图像的裁剪、缩放、加水印 * @param string $path 路径 * @param int $width 裁剪的宽度/限制的...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
读取电脑摄像头列表; 拍照时可以设置生成的图片是否旋转... 给图片加文字水印。 两个窗体w_yk、w_test; 较之前版本opencv库由2.3.1升级到2.4.9,增加人脸识别,增加函数of_getfacesize获取头像位置参数用于保存头像。