`
lyongde
  • 浏览: 91318 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

发布一个图片水印和文字水印函数

    博客分类:
  • PHP
 
阅读更多
/*
@$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); 
}

 

1
1
分享到:
评论

相关推荐

    react-React水印组件支持图片水印文字水印

    "react-watermark-module" 是一个专为此设计的React组件,它允许开发者轻松集成图片水印和文字水印功能。下面将详细阐述这个组件的核心特点、用法以及如何在实际项目中应用。 一、核心特点 1. **灵活性**:react-...

    实现图片加文字水印效果

    综上所述,实现图片加文字水印效果是通过编程语言和图像处理库来完成的,这不仅能够保护版权,也能有效地传达信息。在IT领域,这样的技术广泛应用于个人作品展示、企业品牌推广和社交媒体分享等多个场景。

    ndk处理图片:添加文字和图片水印

    在本主题中,我们将探讨如何使用NDK在Android应用中实现图片处理,特别是添加文字和图片水印的功能。 首先,我们需要了解NDK的基本使用。安装NDK后,我们可以在项目的jni目录下创建C++源码文件,这些文件将包含处理...

    php为图片添加水印函数类(适用于pngjpggif格式).zip

    介绍一个php为图片添加水印函数类(适用于pngjpggif格式), 1:顶部居左, 2:顶部居右, 3:居中, 4:底部局左, 5:底部居右 透明度 -- 0:完全透明, 100:完全不透明  成功 -- 加水印后的新图片地址 ...

    图片上添加文字、图片水印源码(C#)

    本篇将详细解析一个基于C#语言的WinForms应用程序,该程序实现了在图片上添加文字和图片水印的功能,并提供了丰富的设置选项,如水印预览、位置调整、文字字体选择以及透明度调节。 首先,我们来理解一下“图片水印...

    Android 图片加图片logo水印,文字水印

    通过以上步骤,你可以为Android应用中的图片轻松添加图片Logo和文字水印,灵活控制它们的位置,从而满足各种定制需求。在实际开发中,可以根据具体场景进行优化,比如支持动态调整水印的大小、透明度、角度等属性,...

    C#图片加文字水印和图片水印源码

    - 添加水印的函数,可能是两个独立的函数,一个处理文字水印,另一个处理图片水印。 - 结果图像的保存。 7. **注意事项** - 考虑性能:大量图像处理时,应优化代码,避免不必要的内存占用。 - 图像格式:不同的...

    php实现打图片和文字水印

    以下是一个简单的PHP代码示例,演示如何添加文字水印: ```php // 加载源图像 $source = imagecreatefromjpeg('源图片路径.jpg'); // 设置文字 $text = '水印文字'; // 字体文件路径 $font = '字体文件.ttf'; // ...

    [其他类别]上传图片生成缩略图、图片水印、文字水印_7he7upload.zip

    这个压缩包文件"【其他类别】上传图片生成缩略图、图片水印、文字水印_7he7upload.zip"显然是一个关于图片处理的源码参考,它包含了解决三个关键问题的代码:生成缩略图、添加图片水印以及添加文字水印。接下来,...

    给图片添加 文字/图片 水印

    总的来说,使用Java的`Graphics2D`接口添加文字或图片水印是一个涉及图像处理、图形绘制和资源管理的过程。熟练掌握这些技术,不仅可以实现基本的水印添加,还能进一步实现复杂的图像编辑操作。在实际项目中,我们...

    PHP 图片添加水印(文字和图片)

    使用GD库添加文字水印,可以使用`imagestring()`或`imagettftext()`函数。例如: ```php $image = imagecreatefromjpeg('原始图片路径'); $text = '水印文字'; $font = '字体路径.ttf'; // 字体文件路径 $...

    java 图片水印 改变图片大小

    总结来说,Java提供了丰富的API来处理图片水印和大小改变,而Struts2则提供了强大的Web开发支持。结合这两者,我们可以构建出高效、灵活的图片处理服务。理解并熟练掌握这些技术,对于提升Java Web开发能力大有裨益...

    PHP简单遍历文件批量加文字水印,图片水印

    下面是一个添加文字水印的例子: ```php function addTextWatermark($imgPath, $text, $fontPath, $fontSize, $position, $color) { $img = imagecreatefromjpeg($imgPath); // 加载图片,这里假设是JPEG格式 $...

    php文字水印,支持自动换行

    首先,`image.class.php`很可能是一个包含图像处理功能的类文件,其中包含了用于创建和编辑图像的方法,特别是添加文字水印的相关函数。这些函数可能使用了PHP的GD库或Imagick扩展,这两个都是PHP处理图像的标准工具...

    服务器图片水印乱码字体库

    在IT行业中,尤其是在服务器管理和网站开发中,遇到图片水印乱码的问题是非常常见的。这个问题通常涉及到字符编码、字体库和服务器配置等多个方面。标题“服务器图片水印乱码字体库”直指这个问题的核心,即在服务器...

    Java实现打文字和图片打水印

    此外,为了处理大量图片,可以将上述代码封装成一个函数或类,方便重复使用。 通过这个`Watermark`项目,你可以学习到如何在Java中处理图像,以及如何利用Java的图形功能来添加和自定义文字和图片水印。这将有助于...

    python 加水印图片和文字.zip

    `watermark.png`是准备用来作为图片水印的文件,这通常是一个透明背景的图像,以便不影响PDF的原始内容。在Python中,我们可以使用`PIL`(Pillow)库来处理图像,包括读取、调整大小和透明度设置。 `app.py`是主...

    php上传图片添加文字或者图片水印

    1. 图片水印:使用GD库的imagecopymerge()函数,可以将一个图像(水印)复制并合并到另一个图像上。首先,需要加载原始图片和水印图片,然后指定水印在原图上的位置和透明度,最后保存处理后的图像。 ```php $source...

    C#添加图片/文字水印,单张/批量处理demo,完整源码

    本项目提供了一个完整的示例,展示了如何在Visual Studio 2010环境下进行单张图片和批量图片的水印处理。接下来,我们将详细讨论这个C# demo中的关键知识点。 1. **基础概念** - **水印**:水印是一种在图像或文档...

    python给图片增加透明文字水印

    要给图片增加透明文字水印,可以按照以下步骤进行操作: 导入所需的库: 使用PIL库(Python Imaging Library)来处理图像。 打开原始图片: 使用Image.open()函数打开需要添加水印的图片。 创建水印: 使用Image...

Global site tag (gtag.js) - Google Analytics