/*
@$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);
}
分享到:
相关推荐
"react-watermark-module" 是一个专为此设计的React组件,它允许开发者轻松集成图片水印和文字水印功能。下面将详细阐述这个组件的核心特点、用法以及如何在实际项目中应用。 一、核心特点 1. **灵活性**:react-...
综上所述,实现图片加文字水印效果是通过编程语言和图像处理库来完成的,这不仅能够保护版权,也能有效地传达信息。在IT领域,这样的技术广泛应用于个人作品展示、企业品牌推广和社交媒体分享等多个场景。
在本主题中,我们将探讨如何使用NDK在Android应用中实现图片处理,特别是添加文字和图片水印的功能。 首先,我们需要了解NDK的基本使用。安装NDK后,我们可以在项目的jni目录下创建C++源码文件,这些文件将包含处理...
介绍一个php为图片添加水印函数类(适用于pngjpggif格式), 1:顶部居左, 2:顶部居右, 3:居中, 4:底部局左, 5:底部居右 透明度 -- 0:完全透明, 100:完全不透明 成功 -- 加水印后的新图片地址 ...
本篇将详细解析一个基于C#语言的WinForms应用程序,该程序实现了在图片上添加文字和图片水印的功能,并提供了丰富的设置选项,如水印预览、位置调整、文字字体选择以及透明度调节。 首先,我们来理解一下“图片水印...
通过以上步骤,你可以为Android应用中的图片轻松添加图片Logo和文字水印,灵活控制它们的位置,从而满足各种定制需求。在实际开发中,可以根据具体场景进行优化,比如支持动态调整水印的大小、透明度、角度等属性,...
- 添加水印的函数,可能是两个独立的函数,一个处理文字水印,另一个处理图片水印。 - 结果图像的保存。 7. **注意事项** - 考虑性能:大量图像处理时,应优化代码,避免不必要的内存占用。 - 图像格式:不同的...
以下是一个简单的PHP代码示例,演示如何添加文字水印: ```php // 加载源图像 $source = imagecreatefromjpeg('源图片路径.jpg'); // 设置文字 $text = '水印文字'; // 字体文件路径 $font = '字体文件.ttf'; // ...
这个压缩包文件"【其他类别】上传图片生成缩略图、图片水印、文字水印_7he7upload.zip"显然是一个关于图片处理的源码参考,它包含了解决三个关键问题的代码:生成缩略图、添加图片水印以及添加文字水印。接下来,...
总的来说,使用Java的`Graphics2D`接口添加文字或图片水印是一个涉及图像处理、图形绘制和资源管理的过程。熟练掌握这些技术,不仅可以实现基本的水印添加,还能进一步实现复杂的图像编辑操作。在实际项目中,我们...
使用GD库添加文字水印,可以使用`imagestring()`或`imagettftext()`函数。例如: ```php $image = imagecreatefromjpeg('原始图片路径'); $text = '水印文字'; $font = '字体路径.ttf'; // 字体文件路径 $...
总结来说,Java提供了丰富的API来处理图片水印和大小改变,而Struts2则提供了强大的Web开发支持。结合这两者,我们可以构建出高效、灵活的图片处理服务。理解并熟练掌握这些技术,对于提升Java Web开发能力大有裨益...
下面是一个添加文字水印的例子: ```php function addTextWatermark($imgPath, $text, $fontPath, $fontSize, $position, $color) { $img = imagecreatefromjpeg($imgPath); // 加载图片,这里假设是JPEG格式 $...
首先,`image.class.php`很可能是一个包含图像处理功能的类文件,其中包含了用于创建和编辑图像的方法,特别是添加文字水印的相关函数。这些函数可能使用了PHP的GD库或Imagick扩展,这两个都是PHP处理图像的标准工具...
在IT行业中,尤其是在服务器管理和网站开发中,遇到图片水印乱码的问题是非常常见的。这个问题通常涉及到字符编码、字体库和服务器配置等多个方面。标题“服务器图片水印乱码字体库”直指这个问题的核心,即在服务器...
此外,为了处理大量图片,可以将上述代码封装成一个函数或类,方便重复使用。 通过这个`Watermark`项目,你可以学习到如何在Java中处理图像,以及如何利用Java的图形功能来添加和自定义文字和图片水印。这将有助于...
`watermark.png`是准备用来作为图片水印的文件,这通常是一个透明背景的图像,以便不影响PDF的原始内容。在Python中,我们可以使用`PIL`(Pillow)库来处理图像,包括读取、调整大小和透明度设置。 `app.py`是主...
1. 图片水印:使用GD库的imagecopymerge()函数,可以将一个图像(水印)复制并合并到另一个图像上。首先,需要加载原始图片和水印图片,然后指定水印在原图上的位置和透明度,最后保存处理后的图像。 ```php $source...
本项目提供了一个完整的示例,展示了如何在Visual Studio 2010环境下进行单张图片和批量图片的水印处理。接下来,我们将详细讨论这个C# demo中的关键知识点。 1. **基础概念** - **水印**:水印是一种在图像或文档...
要给图片增加透明文字水印,可以按照以下步骤进行操作: 导入所需的库: 使用PIL库(Python Imaging Library)来处理图像。 打开原始图片: 使用Image.open()函数打开需要添加水印的图片。 创建水印: 使用Image...