1.将上传到数据库的图片 也就是 存在临时目录的文件可不可以给它生成缩略图?
我现在都是先将图片上传了生成缩略图再删除上传了的图片
这样效率不高
因为要是一次上传很多图或多人同时上传就会不好了
2.数据库中的图片做缩略图 
就是将存在于数据库中BLOB的二进制内容读出来生成缩略图再放到数据库
因为现在库中已经有大量记录了请高手赐教。
分不够打个 [More] 我在开贴

解决方案 »

  1.   

    //$srcFile 原文件
    //$photoName 目标文件名及路径
    //$UserdstW 输出图片的最大宽度
    //$UserdstH 输出图片的最大高度
    function upPhoto( $srcFile,$photoName,$UserdstW=200,$UserdstH=200 ) { 
      $data = @GetImageSize($srcFile,&$info); 
      switch ( $data[2] ){ 
         case 1: $origImg = @ImageCreateFromGIF($srcFile); 
                 break; 
         case 2: $origImg = @imagecreatefromjpeg($srcFile); 
                 break;
         case 3: $origImg = @ImageCreateFromPNG($srcFile);
                 break;
      }
    $srcW = @ImageSX( $origImg );
    $dstW = $srcW;
    $srcH = @ImageSY( $origImg );
    $dstH = $srcH;
    //按照比例缩小
    if ( $srcW >;= $srcH ) {
        if ( $srcW >;= $UserdstW ){
              $dstH = intval($srcH / $srcW * $UserdstW);
          $dstW = $UserdstW;
        }
    }else{
       if( $srcH >;= $UserdstH ) {
          $dstW = intval($srcW / $srcH * $UserdstH);
          $dstH = $UserdstH;
       }
    }
    //
      if(function_exists("imagecopyresampled"){ 
      $ni = imagecreatetruecolor( $dstW,$dstH ); 
      imagecopyresampled( $ni, $origImg, 0, 0, 0, 0,   $dstW,$dstH,$srcW,$srcH ); 
      }else{ 
      $ni = imagecreate( $dstW,$dstH ); 
      imagecopyresized($ni, $origImg, 0, 0, 0, 0, $dstW,$dstH,$srcW,$srcH ); 
    }  imagejpeg( $ni,$photoName );
    imagedestroy( $ni );
    }
    -----------------------imagecreatetruecolor,服务器需要 更高gd 库,并且此函数好像不支持 gif 格式,不知大家有什么解决方法?
      

  2.   

    感谢楼上关注
    生成缩略图的类我自己有,比你这个还要好
    imagecreatefromjpeg 是读的文件
    我是想将数据库中的二进制内容做缩略图