在学习PHP用图片生产验证码过程中,图片无法正常生成,从网上查了一些资料找到两种解决方法

最初的代码:

<?php
session_start();
//循环出四位 创建随机码
for ($i=0;$i<4;$i++)
{$_nmsg .= dechex(mt_rand(0,15));
}
//将随机码保存在session
$_SESSION['code'] = $_nmsg;
echo $_SESSION['code'];//开始创建图片
//长和高
$_width = 75;
$_height = 25;
//创建一张图像
$_img = imagecreatetruecolor($_width,$_height);
//输出图像
header("Content-Type: image/png");
imagepng($_img);
imagedestroy($_img);
?>

在浏览器无法正常输出,结果如下图所示:

根据从网上搜索的资料,总结了两种方法:

第一种:用 ob_clean();方法清理缓冲区的内容。

如果在网站中经常使用生成图片这类的文件,要想不出现上述错误,就要用ob_clean();方法清理缓冲区。

<?php
session_start();
//循环出四位 创建随机码
for ($i=0;$i<4;$i++)
{$_nmsg .= dechex(mt_rand(0,15));
}
$_SESSION['code'] = $_nmsg;
echo $_SESSION['code'];/*用ob_clean();函数清理输出缓冲区中的内容*/
ob_clean();//长和高
$_width = 75;
$_height = 25;
//创建一张图像
$_img = imagecreatetruecolor($_width,$_height);
//输出图像
header("Content-Type: image/png");
imagepng($_img);
imagedestroy($_img);
?>

加上ob_clean();函数后浏览器输出正常,结果如下,有个 75*25的黑色区域,图片正常输出:

第二种方法:

  因为图片是二进制的文件,如果前边有输出(echo print_r等)的话,可能会相当于在图片前面多出某些字节内容,使浏览器输出错误。

  解决方法,输出(echo print_r)注释掉 即可。我在这把代码移到后边注释掉。

<?php
session_start();
//长和高
$_width = 75;
$_height = 25;
//创建一张图像
$_img = imagecreatetruecolor($_width,$_height);
//输出图像
header("Content-Type: image/png");
imagepng($_img);
imagedestroy($_img);

//循环出四位 创建随机码
//for ($i=0;$i<4;$i++)
//{//   $_nmsg .= dechex(mt_rand(0,15));
//}
//将随机码保存在session  一个站点session可跨页面持久保存//$_SESSION['code'] = $_nmsg;
//echo $_SESSION['code'];

?>

结果 正常输出:

转载于:https://www.cnblogs.com/yangjunnan/p/8005990.html

PHP 用图片输出验证码 无法正常显示相关推荐

  1. 用来向登录页面输出验证码图片的一般处理程序页面

    这是自己以前做的B/S项目中的一个输出验证码图片的页面,没什么技术含量,希望高手们不要嘲笑,只是希望为需要帮助的人尽一点绵薄之力罢了! 页面简介:该页面是一个以ashx 为后缀的一般处理程序页面,用于 ...

  2. java 输出验证码_输出 验证码图片

    [java]代码库package pm_cn.itcast.response; import java.awt.Color; import java.awt.Font; import java.awt ...

  3. 验证码画布生成以及点击图片切换验证码

    //这个验证码画布生成是师兄写的,不是本人写的 1 package com.didinx.common; 2 3 import javax.imageio.ImageIO; 4 import java ...

  4. BinaryWrite方法输出验证码

    在创建网站中验证码是不可或缺的.可以利用BinaryWrite输出二进制图像的方法输出验证码. 在开发图形验证码时,首先生成验证码,然后绘制成图像,最后通过该方法输出到页面中.所以熟练地掌握该方法可以 ...

  5. 《人工智能实践:Tensorflow笔记》听课笔记22_6.1输入手写数字图片输出识别结果

    附:课程链接 第六讲.全连接网络实践 6.1输入手写数字图片输出识别结果 由于个人使用Win7系统,并未完全按照课程所讲,以下记录的也基本是我的结合课程做的Windows系统+PyCharm操作.且本 ...

  6. 关于Abaqus图片输出的总结

    关于Abaqus图片输出的总结 1.改变abaqus界面背景颜色 Aabaqus默认的背景为渐变蓝色,如果想把背景变为白色,方便导出图片,则可以进行以下操作. View-Graphics Option ...

  7. 【java】opencv + Tesseract(tess4j) 实现图片处理验证码识别

    2022/12/27 有的小伙伴说maven导入不了依赖,加了一种方法,百分百解决. 2022/12/28 写了半天,想去论坛放松休息下,结果看到别人已经有成品了,难受啊马飞,晚点看情况要不要写个搭建 ...

  8. 《用两天学习光线追踪》1.项目介绍和ppm图片输出

    本项目参考自教程<Ray Tracing in One Weekend>,在跑通了所有例子之后,加上了自己的理解写成笔记,项目使用CPU多线程提速,并增加了GUI进度显示. 项目链接:ht ...

  9. php图片输出代码怎么写,将数据以图片的形式输出的PHP代码

    <?php echo " "; echo ""; ?> logo.jpg文件和应该是这样写 去见你想见的人吧.趁阳光正好,趁微风不噪,趁繁花还未开至 ...

最新文章

  1. request.getRemoteAddr()和request.getRemoteHost()
  2. arm linux嵌入式网络控制系统,基于ARM uCLinux的网络控制系统设计与实现
  3. vue 怎么在字符串中指定位置插入字符_vue项目中在可编辑div光标位置插入内容的实现代码...
  4. rtp rtcp rtsp
  5. php 高效判断是否登录,php 判断用户是否登录
  6. AssetManager asset的使用
  7. 【链表】牛客网:合并两个排序的链表
  8. SecureCRT 查询ORCLE NUMBER字段显示问题
  9. arm汇编指令集_汇编入门第一篇,小白也能看懂
  10. 纯小白系列(一)之PC病毒分析
  11. 空手套白狼的典型案例,利用各方资源一年狂赚300万!
  12. 墨迹天气3.0引导动画
  13. 2022半入耳式蓝牙耳机怎么选?半入耳式耳机排行榜
  14. 74HC595 芯片详细介绍
  15. 期货开户线上线下开户流程
  16. HDU 1846 Brave Game 巴士博弈
  17. pycharm新建python项目等问题
  18. 简单快速的多图像拼接---百图拼接
  19. win7 php7 redis扩展,win7 php5.6 redis扩展
  20. 西北乱跑娃 --- python opencv图像祛噪

热门文章

  1. div+css 技巧摘录
  2. MOSS 2007 EventHandler 开发步骤
  3. c++ sendmessage 鼠标 坐标是相对自身吗_CAD大家都说会:这些知识不知道,你敢说会CAD吗?...
  4. 很好的分页实例代码(JSP)
  5. HBase简单代码实例(Java)
  6. django 与 百度 ueditor 富文本编辑器集成
  7. Android 自定义ScrollView ListView 体验各种纵向滑动的需求
  8. Android ViewPager多页面滑动切换以及动画效果---换view
  9. Java虚拟机的研究与实现
  10. golang实现生产者和消费者