1、让水印文字铺满图片:

大致效果:

代码:

<?php
function appendSpreadTextMark($imageDir, $markText)
{
$fontFile = "simsun.ttf";
$info = getimagesize($imageDir);
$imWidth = $info[0];
$imHeight = $info[1];
$type = $info[2];//1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM
$ext = image_type_to_extension($type, false);
$mime = $info['mime']; $imgcrefunc = "imagecreatefrom".$ext;
$imgRes = $imgcrefunc($imageDir); $picRangeLimit = $imHeight > $imWidth ? $imWidth : $imHeight;
$fintSize = (int)($picRangeLimit / 50);
if ($fintSize < 5) {
$fintSize = 5;
} $textColor = imagecolorallocatealpha($imgRes, 0, 0, 0, 100); $charCount = mb_strlen($markText, 'UTF-8');
$stepLengthX = $fintSize * 4;
$stepLengthY = (int)($fintSize * $charCount * 1.2);
$numX = (int)($imWidth / $stepLengthX) + 1;
$numY = (int)($imHeight / $stepLengthY) + 1;
$pointLeft = 0;
$pointBottom = $stepLengthY;
for ($inY = 0; $inY < $numY; $inY ++) {
$pointLeft = 0;
for ($inX = 1; $inX < $numX; $inX ++) {
imagettftext($imgRes, $fintSize, 45, $pointLeft, $pointBottom, $textColor, $fontFile, $markText);
$pointLeft += $stepLengthX;
}
$pointBottom += $stepLengthY;
} header('content-type:' . $mime);
$imgrespfunc = 'image' . $ext;
$imgrespfunc($imgRes);
imagedestroy($imgRes);
} $imageDir = "pic.jpg";
$markText = "水印内容";
appendSpreadTextMark($imageDir, $markText);

2、简单验证码效果:

代码:

<?php
//创图像
$im = @imagecreatetruecolor(500, 150) or die("Cannot Initialize new GD image stream");
//分配颜色
$backgroundColor = imagecolorallocate($im, 0, 0, 0);//第一个分配的颜色默认为背景
$textColor = imagecolorallocate($im, 0, 0, 255);
//画像素点
for ($i=0; $i<500; $i++)
{
imagesetpixel($im, rand(0, 500), rand(0,150), $textColor);
}
$textStr = '$im = @imagecreatetruecolor(100, 50)';
//写字符串(原图像、字体、X坐标、Y坐标、待写字符串、字符串颜色)
imagestring($im, 4, 10, 10, $textStr, $textColor); $textStr = '$backgroundColor = imagecolorallocate($im, 0, 0, 0)';
imagestring($im, 4, 10, 30, $textStr, $textColor); $textStr = '$textColor = imagecolorallocate($im, 0, 0, 255)';
imagestring($im, 4, 10, 50, $textStr, $textColor); $textStr = 'imagestring($im, 5, 10, 10, $textStr, $textColor)';
imagestring($im, 4, 10, 70, $textStr, $textColor); header("Content-type: image/png");
imagepng($im);
imagedestroy($im);

php gd实现简单图片验证码与图片背景文字水印的更多相关文章

  1. drf实现图片验证码功能

    一.背景 在之前实现过django的图片验证码,有自己实现过的,也有基于django-simple-captcha的,都是基于form表单验证,若自己实现,可以获取相应的标签name便可以获取判断,若 ...

  2. Selenium获取动态图片验证码

    Selenium获取动态图片验证码 关于图片验证码的文章,我想大家都有一定的了解了. 在我们做UI自动化的时候,经常会遇到图片验证码的问题. 当开发不给咱们提供万能验证码,或者测试第三方网站比如知乎的 ...

  3. 当图片验证码遇上JSP

    今天看到了一个关于使用JSP方式生成图片验证码 的小例子,感觉真的是很不错,拿来分享一下. 原理 对于图片验证码,我们在审查元素的时候会方便的看出是<img src="#" ...

  4. SpringBoot + Spring Security 学习笔记(三)实现图片验证码认证

    整体实现逻辑 前端在登录页面时,自动从后台获取最新的验证码图片 服务器接收获取生成验证码请求,生成验证码和对应的图片,图片响应回前端,验证码保存一份到服务器的 session 中 前端用户登录时携带当 ...

  5. 潭州课堂25班:Ph201805201 django 项目 第十课 自定义错误码,完成图片验证码,用户是否被注册功能 (课堂笔记)

    把 视图传到前台的  JsonResponse(data=data) 先进行处理,之后再传到前台, 处理:引用自定义错误代码,把错误代码返回给前台,前台根据错误代码中文提示 class Code: O ...

  6. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

  7. 一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确

    一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确       最近没事研究了下验证码的的动态生成及通过cookie实现HTML页面对用户输入的验证码的校验,简要如下: 1.写 ...

  8. 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  9. java代码实现简单的认证——图片验证码形式

    前言:认证在互联网中会经常见到,其主要作用是安全问题中防止恶意破解.刷票等.在系统开发中认证的实现也有很多种,什么手机短信认证,邮箱认证等.在这里我使用最基本的验证码的形式进行认证,下面例出过程. 验 ...

随机推荐

  1. MySQL数据分析-(6)数据库设计之规范化

    大家好,我是jacky,很高兴继续跟大家学习MySQL数据分析这门课,上次课我们介绍了E-R图,我们要给手机销售公司设计数据库,那么同一个项目,10个设计人员可能设计出10种不同的E-R图:因为不同的 ...

  2. 省市县数据(txt)

    下载地址:https://pan.baidu.com/s/1x1uR9KxzlxAbn5bgN6ZfrQ 提取码:ky8z

  3. Harmonious Graph

    D. Harmonious Graph 好后悔在写这个题之前浪费了几分钟时间,不然我就写出来了.... 因为他就是连通块之间的合并问题,所以就用并查集就好了 复杂度好像也只是线性的吧... 然后就A了 ...

  4. 【面试题总结】1、统计字符串中某个字符出现的次数(2-Python实现)

    1.可以使用Python的字典实现,对于一个特定的字符串,使用for循环遍历其中的字符,并保存成字典形式.字典的key为字符,value为字符在整个字符串中出现的次数. 2.拓展:如果题目为比较两个字 ...

  5. java代码连接oracle数据库的方法

    oracle连接数据库的方式和mysql是大同小异的,主要的困难点在于oracle的数据库驱动包和依赖只有官方提供,如果你是用maven添加依赖的话,需要自己从官网下载jar包安装到你本地的maven ...

  6. Swiper轮播插件使用

    前文 Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端,能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果.                 归根到此,Swi ...

  7. Qt编写自定义控件20-自定义饼图

    前言 上次在写可视化数据大屏电子看板项目的时候,为了逐步移除对QChart的依赖(主要是因为QChart真的太垃圾了,是所有Qt的模块中源码最烂的一个,看过源码的人没有一个不吐槽,不仅不支持10W级别 ...

  8. Qt编写安防视频监控系统9-自动隐藏光标

    一.前言 这个效果的灵感来自于大屏电子看板系统,在很多系统中尤其是上了大屏的时候,其实在用户不在操作的时候,是很不希望看到那个鼠标箭头指针的,只有当用户操作的时候才显示出来,这个就需要开个定时器定时计 ...

  9. Qt编写安防视频监控系统6-面板开关

    一.前言 面板开关功能是整个系统最人性化的功能之一,可以对主界面中左侧右侧的各个小面板进行显示和隐藏,当隐藏的时候,另外的同级面板自动拉伸填充,这样就不会显得空洞,直接在每个面板的右上角提供了关闭按钮 ...

  10. JVM-类加载子系统

    类的生命周期 1.加载 将.class二进制字节流流从磁盘读到内存中(通过文件的全限定名读取) 2.连接 2.1验证:验证字节码文件的正确性 2.2准备:给类的静态变量分配内存,并赋予默认值(比如 i ...