① 实现php中图形验证码刷新的问题
首先要说明,浏览器对图片,JS等文件会进行缓存当浏览器访问图片的时候,浏览器会查看缓存中是否有这张图片如果有则使用缓存图片,没有则对服务器重新发起访问而浏览器判断是否存在缓存文件是通过文件的url进行识别的如果url不同,浏览器就会对服务器发起新的请求所有加上一个随机参数就能实现验证码图片的刷新因为随机数不同,所以url就不同,所以每次浏览器都会对验证码图片发起新的访问,达到刷新验证码的功能无论是img.src = "imgcode.php?"+Math.random();还是imgcode.php?tm="+Math.random();都是为了不要使用浏览器中图片缓存其中tm没有任何意思,你可以随便取你想要的名字甚至就像第一种情况不用给名字
② php如何实现把图片转换成二维码
这个问题涉及到的东西就多了, 实例代码的话不太可能直接写给你, 但是可以给你提供一个思路:
首先就是这张图片要上传到你自己服务器, 一般可以找到相应图片上传的类库, 保存到你自己的服务器中, 然后生成一个你自己服务器识别图片的地址, 一般是保存着一个相对的路径, 如: /images/2017/xx/xx/xxxxxxx.jpg这样, 然后将这个地址用一个转化成二维码的类库, 生成一个二维码图片给别人扫, 最后是再写一个接口, 将扫描到的二维码转换成相应的上面的地址, 然后拼接出图片完整地址, 最后显示出这个图片来.
好啦, 这就是完整的思路了, 有什么不懂的还可以继续问我
③ PHP中使用header("Content-type: image/gif")无效
这不是你的配置问题,你要明确一点,只要是你使用了header("Content-type: image/gif");那么这个网页就是以gif图片的形式输出的,如果你在页面中添加了其它内容,比如HTML代码,或者有echo输出,那么就会导致网页无法正常识别,从而导致乱码的出现!因为网页已经是默认的图片格式,它的整个网页就已经相当于是一张图片了,你再去输入其它的东西必然是会乱码的。一般来说,由PHP生成的图片都是单独存一个网页,其它页要调用这个图片的时候,只需设置一个<img src="生成图片的网页">就行了!
④ php怎么做图片识别
个人建议:楼主使用php进行图片识别,不如使用ocr文字识别技术来进行图片识别,这样更方便,请看下面的方法:
首先,在电脑上安装ocr文字识别软件(迅捷ocr文字识别软件)。
接着,运行ocr,选择上面的‘极速识别’功能。
然后,点击左上角的‘添加文件’,不需要识别的图片添加进去。
最后,点击操作下面的‘开始识别’按钮。
希望上方的方法可以帮助到你。
⑤ PHP图形验证码识别
<?php
Header("Content-type: image/gif");
/*
* 初始化
*/
$border = 0; //是否要边框 1要:0不要
$how = 4; //验证码位数
$w = $how*15; //图片宽度
$h = 20; //图片高度
$fontsize = 5; //字体大小
$alpha = "abcdefghijkmnopqrstuvwxyz"; //验证码内容1:字母
$number = "023456789"; //验证码内容2:数字
$randcode = ""; //验证码字符串初始化
srand((double)microtime()*1000000); //初始化随机数种子
$im = ImageCreate($w, $h); //创建验证图片
/*
* 绘制基本框架
*/
$bgcolor = ImageColorAllocate($im, 255, 255, 255); //设置背景颜色
ImageFill($im, 0, 0, $bgcolor); //填充背景色
if($border)
{
$black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色
ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框
}
/*
* 逐位产生随机字符
*/
for($i=0; $i<$how; $i++)
{
$alpha_or_number = mt_rand(0, 1); //字母还是数字
$str = $alpha_or_number ? $alpha : $number;
$which = mt_rand(0, strlen($str)-1); //取哪个字符
$code = substr($str, $which, 1); //取字符
$j = !$i ? 4 : $j+15; //绘字符位置
$color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色
ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符
$randcode .= $code; //逐位加入验证码字符串
}
/*
* 添加干扰
*/
for($i=0; $i<5; $i++)//绘背景干扰线
{
$color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色
ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线
}
for($i=0; $i<$how*40; $i++)//绘背景干扰点
{
$color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色
ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点
}
//把验证码字符串写入session
//session_start();
//$_SESSION['randcode'] = $randcode;
//把验证码字符写入COOKIE
setcookie( "randcode", $randcode, (time() + 3600*24*30), "/" );
/*绘图结束*/
Imagegif($im);
ImageDestroy($im);
/*绘图结束*/
?>