首页 新闻 搜索 专区 学院

PHP 怎么样把一张图片缩小到指定大小

0
[已解决问题] 解决于 2011-04-08 20:46

PHP 怎么样把一张图片缩小到指定大小

比如我的一张原图是800*600px

怎么缩小到118*148px

这个要怎么样实现?知道的说说,谢谢

丨灬風塵一丬的主页 丨灬風塵一丬 | 初学一级 | 园豆:176
提问于:2011-03-15 19:56
< >
分享
最佳答案
0

如果是改变显示的大小,直接img标签属性里,width和height设置啊。

如果想真正改变,你看看这个代码(没试验过):

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:returnFalse;
}
if(!$im) returnFalse;
$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);
returnTrue;
}

大概就是用到imagecreatefromjpeg、imagecreatetruecolor、imagecopyresampled 、 imagepng这几个函数

Rusty's code | 菜鸟二级 |园豆:410 | 2011-03-17 13:48
其他回答(2)
0

没搞过PHP  不过把图片放到一个设置好大小的表格中不知道行不

小w威 | 园豆:37 (初学一级) | 2011-03-16 09:26
0

比例都变了啊?怎么个缩小法儿?

顾晓北 | 园豆:10819 (专家六级) | 2011-03-16 10:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册