当前位置: 首页 > news >正文

php生成图片注释

//生成验证码图片注释

<?php

session_start();

$arr = array(
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x',
'y','z','0','1','2','3','4','5','6','7','8','9'
);

$rand = "";
for($i=1;$i<=4; $i++){
$rand .= $arr[rand(0,count($arr)-1)];
}

$_SESSION['check_pic'] = $rand;

//生成图片
$im = imagecreatetruecolor(100,30);

//生成颜色,当第一次调用生成颜色的方法,是生成背景颜色,默认是黑色
//如果想自定义背景颜色,用到imagefill函数
$bg = imagecolorallocate($im,200,200,200);
imagefill($im,0,0,$bg);

//第二次调用这个方法,是可以生成图片上面的文字或其他样式的颜色
$te = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));

$te2 = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));

//生成干扰线,就是画线
$posLineX1 = rand(6,30);
$posLineX2 = rand(30,60);
for($i=0;$i<5;$i++){
$posLinY1=rand(2,10);
$posLinY2=rand(11,28);
imageline($im,$posLineX1,$posLinY1,$posLineX2,$posLinY2,$te2);
$posLineX1 += rand(30,60);
$posLineX2 += rand(61,98);
}

//干扰点

for($i=0;$i<90;$i++){
$te3 = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im,rand(2,100),rand(2,30),$te3);
}


//在图片上面生成文字
//imagestring($im,5,rand(3,70),rand(3,15),$rand,$te);

$posX = rand(6,45);
for($i=0;$i<4;$i++){
$posY = rand(2,15);
imagestring($im,rand(2,5),$posX,$posY,substr($rand,$i,1),$te);
$posX += rand(8,20);
}

//要把php当成图片输出,必须给文件一个头申明

 

ob_clean 只是清空当前缓冲区的数据

ob_clean();


header("Content-type:image/jpeg");
//最终生成图片
imagejpeg($im);

?>

转载于:https://www.cnblogs.com/yanjialin/p/3728461.html

相关文章:

  • 陕西驾驶理论考试
  • C语言回顾一“Hello world”
  • 学会九招不再犯愁!移动硬盘使用中心得体会
  • 系统内置的四种网络测试工具
  • Android: ListView数据的分批加载 以及 Handle 总结
  • 输入gpedit.msc时提示找不到文件这是什么原因
  • JS 公共方法
  • 【Vegas原创】FCKEditor:Times附近有语法错误
  • 设置NumericStepper控件不可用状态的上下箭头颜色。
  • 关于 Linux
  • 革新2410D开发板试用手记(三)
  • SQL Server 2005系列教学(9) SQL 存储过程
  • 华为配置SSH登陆详细步骤
  • 国内成长型中小企业已迈入ERP替换时代
  • 开始学习C基础
  • [Vue CLI 3] 配置解析之 css.extract
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 0x05 Python数据分析,Anaconda八斩刀
  • JAVA之继承和多态
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • magento 货币换算
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Vue小说阅读器(仿追书神器)
  • Webpack 4x 之路 ( 四 )
  • 初识 webpack
  • 入门级的git使用指北
  • 智能合约Solidity教程-事件和日志(一)
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 第二十章:异步和文件I/O.(二十三)
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $(selector).each()和$.each()的区别
  • $refs 、$nextTic、动态组件、name的使用
  • (02)Hive SQL编译成MapReduce任务的过程
  • (09)Hive——CTE 公共表达式
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (动态规划)5. 最长回文子串 java解决
  • (剑指Offer)面试题34:丑数
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (南京观海微电子)——I3C协议介绍
  • (十五)使用Nexus创建Maven私服
  • (一)appium-desktop定位元素原理
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .FileZilla的使用和主动模式被动模式介绍
  • .htaccess配置重写url引擎
  • .Net 6.0 处理跨域的方式
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .project文件
  • /bin、/sbin、/usr/bin、/usr/sbin