熟悉GD的朋友进来一下! GD本来就有这样的函数,不太记得了,好像是ImageCopyResize(...) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PHP中自动生成缩图(转帖) 01.5.22 // 本函数从源文件取出图象,设定成指定大小,并输出到目的文件 // 源文件格式:gif,jpg,jpe,jpeg,png // 目的文件格式:jpg // 参数说明: // $srcFile 源文件 // $dstFile 目标文件 // $dstW 目标图象宽度 // $dstH 目标图象高度 function makethumb($srcFile,$dstFile,$dstW,$dstH) { $data = GetImageSize($srcFile,&$info); //查询图片资料 switch ($data[2]) //数组的第二个数据就是图片的格式 1为GIF 2为JPG 3为PNG //然后根据图片格式建立可编辑的涵数 { 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; //取图片的宽高,然后按/2的大小建立目标图片宽高 $black = ImageColorAllocate($ni, 0,0,0); imagefilledrectangle($ni,0,0,$dstW,$dstH,$black);//填充的背景色你可以重新指定,现在用的是黑色 ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);//复制新图片并调整大小,不过这里我觉得是$NI跟$IM要调换,用旧图片来复制新图,不是用新图复制旧图,我已经发信个原来作者,等消息 ImageJpeg($ni,$dstFile);//如果你要把图片直接输出到浏览器, //那么把第二个参数去掉,并用header()函数指定mine类型先 imagedestroy($im);//关闭图片 imagedestroy($ni); //同上 } 如何获取Gzip前后网页大小 url重写怪异情况 php的socket使用 关于排名问题 数据库表里存了2000字,想每次取出500字,怎么办? mysql_affected_rows ()运用错误的问题 如何让系统自动发mail 大家帮我看一下这个连接数据库的问题,怎么出错呢?????? 关于 播放器? 怎么没有人回答?再问!有关php中库函数的安装问题? 表单提交时Submit按钮可不可以赋变量? 关于地址栏
01.5.22 // 本函数从源文件取出图象,设定成指定大小,并输出到目的文件
// 源文件格式:gif,jpg,jpe,jpeg,png
// 目的文件格式:jpg
// 参数说明:
// $srcFile 源文件
// $dstFile 目标文件
// $dstW 目标图象宽度
// $dstH 目标图象高度
function makethumb($srcFile,$dstFile,$dstW,$dstH) {
$data = GetImageSize($srcFile,&$info);
//查询图片资料
switch ($data[2])
//数组的第二个数据就是图片的格式 1为GIF 2为JPG 3为PNG
//然后根据图片格式建立可编辑的涵数
{
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;
//取图片的宽高,然后按/2的大小建立目标图片宽高
$black = ImageColorAllocate($ni, 0,0,0);
imagefilledrectangle($ni,0,0,$dstW,$dstH,$black);//填充的背景色你可以重新指定,现在用的是黑色
ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);//复制新图片并调整大小,不过这里我觉得是$NI跟$IM要调换,用旧图片来复制新图,不是用新图复制旧图,我已经发信个原来作者,等消息
ImageJpeg($ni,$dstFile);//如果你要把图片直接输出到浏览器,
//那么把第二个参数去掉,并用header()函数指定mine类型先
imagedestroy($im);//关闭图片
imagedestroy($ni); //同上
}