给你一段代码,希望你用的上:
<?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.   

    ahchao(太空),和我前几天写的一段PHP程序差不多
    我的思想的:
    step 1:获得图片的长和宽;getimagesize
    step 2:用它的长和宽和容纳它的单元格的长和宽进行比较
    step 3:例如图片长1000,单元格长100,那么就用100*1000=1/10,就意味着图片得缩小十分之一
    step 4:直接把图片的宽乘上1/10就可以了
    这只是基本思路,实际上的情况比这多一些,我都做到了按比例显示,可有一点觉得不好:就是单元格的宽度我不能通过函数获得,所以不算太动态还有就是,我的方法只是缩小了显示出来,我在想使用imagecreatefrom函数是否可以创建一个小的图片显示出来,这样可减少网络流量。我对javascript不熟,也许根本有更简单的方法
      

  2.   

    我想你只是粗略的看了一下,如果没有试用的话我还是建议你试用一下BTW:如果JAVASCRIPT能做到,我还是会选择用PHP来实现,这样的兼容性才够好,也避免了浏览器的不同而导致JAVASCRIPT不能正确执行的可能。
      

  3.   

    ahchao(太空) :
    非常想试用,无奈试用不了,因为有一个问题一直困扰着我,不知道怎么弄
    你帮我看看呀!
    http://expert.csdn.net/Expert/TopicView1.asp?id=1792333