图片缩略图
<?php
/* 
 * 图片缩略图 
 * $srcfile 源图片,$rate 缩放比,默认为缩小一半
 * 例如: resizeimage("zt32.gif",".1");
 */function resizeimage($srcfile,$rate=.5){
 $size=getimagesize($srcfile);
 switch($size[2]){
  case 1:
   $img=imagecreatefromgif($srcfile);
   break;
  case 2:
   $img=imagecreatefromjpeg($srcfile);
   break;
  case 3:
   $img=imagecreatefrompng($srcfile);
   break;
 }
 //源图片的宽度和高度
 $srcw=imagesx($img);
 $srch=imagesy($img);
 //目的图片的宽度和高度
 $dstw=floor($srcw*$rate);
 $dsth=floor($srch*$rate);
 //新建一个真彩色图像
 $im=imagecreatetruecolor($dstw,$dsth);
 $black=imagecolorallocate($im,255,255,255);
 
 imagefilledrectangle($im,0,0,$dstw,$dsth,$black);
 imagecopyresized($im,$img,0,0,0,0,$dstw,$dsth,$srcw,$srch);
 // 以 JPEG 格式将图像输出到浏览器或文件
 header("Content-type: image/jpeg");
 imagejpeg($im);
 //释放图片
 imagedestroy($im);
 imagedestroy($img);}
?>

解决方案 »

  1.   

    把图片存入mysql数据库
    <?
    /*
     * 把图片存入mysql数据库
     *
     #
     # 数据表的结构 `images`
     #CREATE TABLE images (
      picid int(3) NOT NULL auto_increment,
      picdata longblob NOT NULL,
      pictext varchar(100) NOT NULL default '',
      PRIMARY KEY  (picid)
    ) TYPE=MyISAM; */
    if(trim($picfile[0])!=""){
        $link=@mysql_connect("localhost","root","root");
        //连接,用你的具体连接名替换root,具体连接密码替换root
            if($link==false) 
               {
         echo "<script>alert('连接数据库时发生错误,请稍后再试!')</script>";
               }
        $res=mysql_select_db("kkk");
            if($res==false) 
               {
         echo "<script>alert('打开数据库时发生错误,请稍后再试!')</script>";
               }
      $tmpset=0;  
      // 存放成功加入的图片数目
      for($i=0;$i<=3;$i++)
          { 
          // picfile[i]存放所提交的图片信息(文件路径)
          if(trim($picfile[$i])!="")
             {
             //读取数据
             $fp=fopen($picfile[$i],"r");
             $picdata=fread($fp,filesize($picfile[$i]));
             fclose($fp);
             //加上必要的标志符号
             $picdata=addslashes($picdata);
             //用具体的数据表名代替images
             //pictext[i]存放所提交的图片的文字说明
             $qu="insert into images(picdata,pictext) values('$picdata','$pictext[$i]')";
             $res=@mysql_query($qu,$link);  
                   if($res==false) 
                       {
           echo "<script>alert('图片 ".$i." 提交失败!')</script>";
                       continue;
                       }  
             $tmpset=$tmpset+1;                                 
             }
           }
      echo "<script>alert('操作成功!实际入库图片数 ".$tmpset." 张')</script>";
    }
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head><body>
    <form action="<? echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data" name="form1">
      <input type="file" name="picfile[]">
      文件说明 
      <input type="text" name="pictext[]">
      <br>
      <input type="file" name="picfile[]">
      文件说明
    <input type="text" name="pictext[]">
      <br>
      <input type="file" name="picfile[]">
      文件说明
    <input type="text" name="pictext[]">
      <br>
      <input type="file" name="picfile[]">
      文件说明
    <input type="text" name="pictext[]">
      <br>
      <input type="submit" name="Submit" value="提交">
    </form>
    </body>
    </html>显示存在mysql中的图片
    <? 
    /*
     * 显示存在mysql中的图片
     * 在外部用<img src="displayimg.php?picid=1">来调用数据库中的第一张图片
     #
     # 数据表的结构 `images`
     #CREATE TABLE images (
      picid int(3) NOT NULL auto_increment,
      picdata longblob NOT NULL,
      pictext varchar(100) NOT NULL default '',
      PRIMARY KEY  (picid)
    ) TYPE=MyISAM; */$link=@mysql_connect("localhost","root","root"); 
    mysql_select_db("kkk");
    $qu="select picid,picdata from images where picid=$picid"; 
    $res=@mysql_query($qu,$link); 
    $num=mysql_num_rows($res);
       if($num==0) 
          { 
          print "<br><br><br>";
          print "<p><b>没有这张图片!</b></p>";
          exit();  
          }
    $row=@mysql_fetch_row($res);  
    header("Content-type:image/");
    echo $row[1];
    ?>
      

  2.   

    GD图形库验证码
    1、
                  请输入右边的验证码:
                  <input name="auth_number" type="text" size="4" maxlength="4" class="input1">
                  <img src="auth_img.php" width="80" height="20" border=0 alt="">2、auth_img.php
    <?
    session_start();$img_width=80;
    $img_height=20;srand(microtime() * 100000);
    for($ti=0;$ti<4;$ti++)
    {
    $new_number.=dechex(rand(0,15));
    }$_SESSION[check_auth_number]=$new_number;
    $number_img=imageCreate($img_width,$img_height);
    ImageColorAllocate($number_img,255,255,255);
    for($i=1;$i<=128;$i++)
    {
    imageString($number_img,1,mt_rand(1,$img_width),mt_rand(1,$img_height),"*",imageColorAllocate($number_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
    }
    for($i=0;$i<strlen($HTTP_SESSION_VARS[check_auth_number]);$i++)
    {
    imageString($number_img,mt_rand(3,5),$i*$img_width/4+mt_rand(1,8),mt_rand(1,$img_height/4), $HTTP_SESSION_VARS[check_auth_number][$i],imageColorAllocate($number_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
    }
    header("Content-type: image/png");
    ImagePng($number_img);
    ImageDestroy($number_img);
    ?>3、验证部份
    function check_auth_number($auth_number)
    {
    if($auth_number!=$_SESSION[check_auth_number] || empty($_SESSION[check_auth_number]))
    {
    echo "<Script Language =\"JavaScript\">\n history.back();\n alert(\" 图片验证码错误 \");\n </Script> \n";
    exit();
    }
    }
      

  3.   

    多谢kingerq(多菜鸟)兄的辛劳和坦诚,小弟发“请资深人士开讲座”系列帖子的本意是想和大家一起探讨一些PHP中常见的问题和难点,这其中小弟也了解一些理论和实作技巧,但对于深层次的东西,我还想学习得更多,我想这也是大家共同的心愿。
    PHP手册是个好东西,但是相比起来实作的经验和相互的交流更重要,上CSDN的朋友未必水平都一样,熟悉和精通的方向也不一样,开一系列集思广益的帖子,高手们多上一些实作的程序和个人的心得、体会、技巧,我认为这对大家都是有帮助的。
      

  4.   

    呵呵,对图象处理不是很了解,只知道一些最基本的东西
    个人觉得图象处理这种第三方API的东西,没必要多研究它,实际上它也超出PHP要讨论的范围了,当需要的时候查查手册基本也能搞定
    建议楼主开个PHP XML讨论区,因为XML也后可能是没个涉及PHP的人必须要懂得的东西
      

  5.   

    getimagesize()返回一个数组,获得图片的大小和类型呵呵,不知道算不算图片处理
      

  6.   

    主要就是PHP GD库的安装与使用吧,PHP放下几年了,这个还不会,呵呵。