用<img src="..." width="..." height=".....">也可以实现的

解决方案 »

  1.   

    http://www.chenhui.net/temp/ceshi/ceshi.rar
      

  2.   

    可以用js实现
    <img name="aaa" src="...">
    <script language="javascript">
         obj = document.imgaes['aaa'];
         if(obj.width>500) {
            tmp = obj.width/500;
            obj.width = 500;
         }
         if(obj.height>500) {
             h = obj.height/tmp;
             obj.height = h;
         }
    </script>大概是这么写的,有错误,具体的自己调试一下好了。
      

  3.   

    js我知道怎么搞了,用GD库是怎么实现的?
    我的疑问就是 图片的地址和其他文本是一起存在一个字段里面的
    我读取数据库时并不知道图片的确切地址
    难道先用正则表达式把地址搜出来,用GD库函数计算好大小后又替换回去?
      

  4.   

    function makeThumb($srcFile,$dstFile,$dstW,$dstH) {
         $data = GetImageSize($srcFile,&$info);
        switch (CoreUtil::getFileExtension($dstFile)){
            case 'gif':
                $im = @ImageCreateFromGIF($srcFile); break;
            case 'jpg':
                case 'jpeg':
                $im = @imagecreatefromjpeg($srcFile); break;
            case 'png':
                $im = @ImageCreateFromPNG($srcFile); break;
                default: return False;
        }
            if(!$im) return False;
        $srcW=ImageSX($im);
        $srcH=ImageSY($im);
        $dstX=0;
        $dstY=0;
        if ($srcW*$dstH>$srcH*$dstW){
             $fdstH=round($srcH*$dstW/$srcW);
                $dstY=floor(($dstH-$fdstH)/2); $fdstW=$dstW;
            } else {
             $fdstW=round($srcW*$dstH/$srcH); $dstX=floor(($dstW-$fdstW)/2);
         $fdstH=$dstH;
            }
        $ni=ImageCreate($dstW,$dstH);
        $dstX=($dstX<0)?0:$dstX;
        $dstY=($dstX<0)?0:$dstY;
        $dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;
        $dstY=($dstY>($dstH/2))?floor($dstH/s):$dstY;
        $black = ImageColorAllocate($ni, 0,0,0);
        imagefilledrectangle($ni,0,0,$dstW,$dstH,$black);
        ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);
        ImageJpeg($ni,$dstFile);
        imagedestroy($im);
        imagedestroy($ni);
            return True;
        }