用PHP生成图片,你知道验证是怎么生成的吗?YanZhengMa.php
<?php 
//生成验证码图片 
Header("Content-type: image/PNG"); 
srand((double)microtime()*1000000);//播下一个生成随机数字的种子,以方便下面随机数生成的使用session_start();//将随机数存入session中
$_SESSION['authnum']="";
$im = imagecreate(62,20); //制定图片背景大小$black = ImageColorAllocate($im, 0,0,0); //设定三种颜色
$white = ImageColorAllocate($im, 255,255,255); 
$gray = ImageColorAllocate($im, 200,200,200); imagefill($im,0,0,$gray); //采用区域填充法,设定(0,0)while(($authnum=rand()%100000)<10000);
//将四位整数验证码绘入图片 
$_SESSION['authnum']=$authnum;
imagestring($im, 5, 10, 3, $authnum, $black);
// 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 座标处(图像的左上角为 0, 0)。
//如果 font 是 1,2,3,4 或 5,则使用内置字体for($i=0;$i<200;$i++) //加入干扰象素 

$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); 

ImagePNG($im); 
ImageDestroy($im); 
?> test.php
<? session_start();?> 
<FORM METHOD=POST ACTION=""> 
<input type=text name=number maxlength=4><img src="YanZhengMa.php?act=init"> 
<INPUT TYPE="submit" name="sub"> 
</FORM> 
<? 
//检验校验码 
if(isset($HTTP_POST_VARS["sub"])): 
if($HTTP_POST_VARS["number"] != $HTTP_SESSION_VARS[login_check_number] || empty($HTTP_POST_VARS["number"])){ 
    echo "校验码不正确!" ; 
}else{ 
    echo"验证码通过!"; 

endif; 
show_source('test.php'); 
//以上本页的源码 
//以下是生成验证码的源码 
show_source('YanZhengMa.php'); 
?> 

解决方案 »

  1.   

    弄个简单的例子吧:/* 告诉浏览器将要显示一个jpg类型的图片 */
    header('Content-Type:image/jpeg');/* 用传输过来的image_id参数,从数据库中读取图片的真正保存路径,保存到$url变量内。 */
    $sql = 'SELECT image_url FROM images WHERE image_id='.$_GET['image_id'];
    $res = mysql_query($sql);
    ... .../* 通过imagecreatefromjpeg函数,将jpg图片资源数据读取入变量$img内。 */
    $img = imagecreatefromjpeg($url);/* 如果读取成功,使用imagejpeg函数,将图片数据输出至浏览器,完毕之后,使用imagedestroy释放资源。 */
    if($img !== FALSE){
        imagejpeg($img);
        /* 对于短小的脚本来说,这个资源释不释放都无所谓,一个页面执行完毕之后该释放的系统自动释放了。 */
        imagedestroy($img);
    }
    这个也可以用来做简单的防图片盗链。
      

  2.   

    以上的代码需要GD图形库的支持,至于你的服务器是否加载了GD库,用一个 phpinfo() 看一下就可以了。如果没有enable那就死翘翘。
      

  3.   

    avatar.php?uid=2&size=middle
    这个应该是uch里面的调用头象的功能。
    图片的显示,是跟你自己说的一样
    不过楼上面的兄弟说的也很正确,你可以理解多种方法生成图片。
      

  4.   

    是的,avatar.php处理图片,如向数据库取出图片,又或者读取某个图片文件,又或者是用GD库生成的图片,设置HTTP图像的头标,然后输出就可以了,楼上几位讲的很对。
      

  5.   

    那echo地址行的通吗?我看了2楼的例子,明白了,不过这个函数imagecreatefromjpeg(),看了解释是返回的JPEG标示服,请问标示服储存的是什么信息?
    还有个问题,我自己创建了一个a.php,里面就一行代码
    <?php
    echo "/copyright.jpeg";
    ?>
    然后我再b.html中加了一个地址<img src="a.php">
    请问怎么每效果,谢谢,刚学
      

  6.   

    设网站根目录下有三个文件:a.jpg,a.php,a.htm,代码如下:
    //a.php
    <?php
    header('content-type:image/jpeg');
    echo file_get_contents('a.jpg');//读取a.jpg并输出
    ?>//a.htm
    <img src="a.php"/>
    也就是说,php程序echo的是图片文件的二进制数据,而不是图片的地址。
      

  7.   

    也就是说只要加入 file_get_contents()函数,那么就就等于把整个图像文件而不止是二进制编码存入变量里,
      

  8.   

    楼主讲得有些不明白,就是这样:
    1、设置头标为JPEG的图像,告诉给浏览器,这个是JPG图片(header语句)
    2、file_get_contents,就是把jpg文件的二进制编码取出然后完整的输出,没有存入变量,只是存入了内存的某个地方。