<?php
//自动生成图片缩略图  
// 本函数从源文件取出图象,设定成指定大小,并输出到目的文件 
// 源文件格式:gif,jpg,jpe,jpeg,png 
// 目的文件格式:jpg 
// 参数说明: 
// $srcFile 源文件 
// $dstFile 目标文件 
// $dstW 目标图象宽度 
// $dstH 目标图象高度 
function makethumb($srcFile,$dstFile,$dstW,$dstH) { 
$data = GetImageSize($srcFile,&$info); 
switch ($data[2]) { 
case 1: 
  $im = @ImageCreateFromGIF($srcFile); 
  break; 
case 2: 
  $im = @imagecreatefromjpeg($srcFile); 
  break; 
case 3: 
  $im = @ImageCreateFromPNG($srcFile); 
  break; 

$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);//如果你要把图片直接输出到浏览器, 
//那么把第二个参数去掉,并用header()函数指定mine类型先 
imagedestroy($im); 
imagedestroy($ni); 
}
?>
别人写的~

解决方案 »

  1.   

    <?php
    $image = "vintdev.JPG"; // 原图
    $thumbw = 200; // 期望的目标图宽
    $thumbh = 100; // 期望的目标图高$size = getimagesize($image); // 获取原图大小
    $scale = min($thumbw/$size[0], $thumbh/$size[1]); // 计算缩放比例
    $width = (int)($size[0]*$scale);
    $height = (int)($size[1]*$scale);
    $deltaw = (int)(($thumbw - $width)/2);
    $deltah = (int)(($thumbh - $height)/2);$src_img = ImageCreateFromJPEG($image); // 载入原图
    $dst_img = imagecreatetruecolor($thumbw, $thumbh); // 创建目标图$back = ImageColorAllocate($dst_img, 255,255,255); // 填充的背景色
    imagefill($dst_img,0,0,$back);ImageCopyResampled($dst_img, $src_img, $deltaw, $deltah, 0, 0, $width, $height, ImageSX($src_img),ImageSY($src_img)); // 复制图片imagejpeg($dst_img,"aaa.jpg"); // 创建图片
    ImageDestroy($src_img);
    ImageDestroy($dst_img);
    ?>
    对比<br>
    原图<img src=vintdev.JPG><br>
    缩略图<img src=aaa.JPG>
      

  2.   

    我申请的空间,好象不支持imagecreatetruecolor()函数,
    提示说只有在gd2.0或更新版本中才支持
    怎么办啊,唠叨兄的程序运行的很棒,救救我吧
      

  3.   

    $dst_img = imagecreatetruecolor($thumbw, $thumbh); // 创建目标图
    改为
    if(function_exists("imagecreatetruecolor"))
      $dst_img = imagecreatetruecolor($thumbw, $thumbh); //只有gd2才有此函数
    else
      $dst_img = imagecreate($thumbw, $thumbh);这样在不同的gd下都行了
      

  4.   

    这个问题解决了,可是imagecopyresampled()函数好象也要GD2.0以后,怎么办啊?????