【个人意见,仅供参考】建议养成google的习惯:1.一个老外写的PHP图片类,有源码和说明
http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php2.另一个老外写的“Image Uploading and Resizing with PHP”,即“PHP图片上传和大小调整”
http://www.4wordsystems.com/php_image_resize.php

解决方案 »

  1.   

    中等图是每次放大小图时 调用原图生成缩略(比小缩略图大) 但不生成图片文件
    可以不生成图片文件,把你上面的程序,保存为xx.php.然后呢,将原始图片名和要生成的文件宽度和高度当做参数传给xx.php在页面可以这样调用xx.php?file=xx.jpg&width=200&height=200
    xx.php动态获得这三个参数,然后动态生成.
      

  2.   

    php中操作图像很简单,看看php manual把。
      

  3.   

    也可以使用图片工具进行操作,对图像进行裁减,不过,这样一定会生成裁减后的文件,可能跟LZ说的缩略图不是一码事,不过,可以达到缩略图的效果,而且可以任意裁减,代码也比较简单,Linux采用convert工具进行裁减。
      

  4.   

    其实你可以写一个缩略图生成类。在图片第一次使用时调用这个类,以后就不用了访问速度就快了啊。
    这个类的使用方法getpic($rs["filetype"],$rs["picpath"],30,20,"cba",$thumb_path)
    class resizeimage
    {
       //图片类型
       var $type;
       //实际宽度
       var $width;
       //实际高度
       var $height;
       //改变后的宽度
       var $resize_width;
       //改变后的高度
       var $resize_height;
       //是否裁图
       var $cut;
       //源图象
       var $srcimg;
       //目标图象地址[separator]
       var $dstimg;
       //临时创建的图象
       var $im;
       //缩略图目录
       var $th_path;function resizeimage($img, $wid, $hei,$c,$type="s",$qianzhui)
       {
           $this->srcimg = $img;
           $this->resize_width = $wid;
           $this->resize_height = $hei;
           $this->cut = $c;
       $this->th_path = $qianzhui;
           //图片的类型
           $this->type = substr(strrchr($this->srcimg,"."),1);
           //初始化图象
           $this->initi_img();
           //目标图象地址
            $this -> dst_img($type);
           //--
           $this->width = imagesx($this->im);
           $this->height = imagesy($this->im);
           //生成图象
           $this->newimg();
           ImageDestroy ($this->im);
       }
       function newimg()
       {
           //改变后的图象的比例
           $resize_ratio = ($this->resize_width)/($this->resize_height);
           //实际图象的比例
           $ratio = ($this->width)/($this->height);
           if(($this->cut)=="1")
           //裁图
           {
               if($ratio>=$resize_ratio)
               //高度优先
               {
                   $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
                   imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);
                   ImageJpeg ($newimg,$this->dstimg);
               }
               if($ratio<$resize_ratio)
               //宽度优先
               {
                   $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
                   imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, $this->width, (($this->width)/$resize_ratio));
                   ImageJpeg ($newimg,$this->dstimg);
               }
           }
           else
           //不裁图
           {
               if($ratio>=$resize_ratio)
               {
                   $newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio);
                   imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);
                   ImageJpeg ($newimg,$this->dstimg);
               }
               if($ratio<$resize_ratio)
               {
                   $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);
                   imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height);
                   ImageJpeg ($newimg,$this->dstimg);
               }
           }
       }
       //初始化图象
       function initi_img()
       {
           if($this->type=="jpg")
           {
               $this->im = imagecreatefromjpeg($this->srcimg);
           }
           if($this->type=="gif")
           {
               $this->im = imagecreatefromgif($this->srcimg);
           }
           if($this->type=="png")
           {
               $this->im = imagecreatefrompng($this->srcimg);
           }
       }
       //图象目标地址
       function dst_img($type)
       {
          
           $name         = $this->srcimg;
       $n=substr(strrchr($name,"/"),1);
             $this->dstimg = $this->th_path.$n.".".$type.".".$this->type;
     
       }
    }///获取文件名
     //获取新图片地质
    function getpic($filetype,$attachment,$w,$h,$type="s",$t_path=""){
    $qianzhui=$t_path;
    $a=substr(strrchr($attachment,"/"),1);
    //获取文件名'image/jpg', 'image/jpeg', 'image/png', 'image/pjpeg', 'image/gif', 'image/bmp'
    if($filetype=="image/pjpeg" || $filetype=="image/jpeg" ||  $filetype=="image/jpg" ){$img_end_src=$qianzhui.$a.".".$type.".jpg";}elseif($filetype=="image/gif"){
    $img_end_src=$qianzhui.$a.".".$type.".gif";
    }
    elseif($filetype=="image/x-png"){
    $img_end_src=$qianzhui.$a.".".$type.".png";
    }
    else
    {
    $img_end_src=$qianzhui.$a;
    }//
     //判断是不是存在
    $img_src=$qianzhui.$attachment;//
    if(file_exists($img_end_src)){
     $resizeimage=$img_end_src;
    }
    else
    {
    $resizeimage =new resizeimage($attachment,$w,$h,"1",$type,$qianzhui);
    $resizeimage =$img_end_src;}return $resizeimage;
    }