php 大图找小图,php 生成图片缩略图-大图生成小图片

本文详细介绍了如何使用PHP的图像处理函数创建缩略图。通过GetImageSize获取图片信息,根据原图宽高比计算缩略图尺寸,并使用ImageCopyResized调整大小,最后以指定质量保存JPEG格式的缩略图。此函数适用于网站中需要自动创建图片预览的情况。

/*

函数:生成缩略图

MakeBuild("images/a.jpg","news/b.jpg","100");

参数:

echo $BuildFile;   原图 带路径

echo $newFile;    生成的缩略图 带路径

echo $File_width;   缩略图宽度值

echo $File_height;   缩略图高度值 (默认为宽度的比例值)

echo $rate;     缩略图象品质;

*/

function MakeBuild($BuildFile,$newFile,$File_width,$File_height=0,$rate=1000) {

if(!is_file($BuildFile)){

$this->msg("文件 ".$BuildFile." 不是一个有效的图形文件! 系统无法生成该文件的缩略图!");

return false;

}

$data = GetImageSize($BuildFile);

switch($data[2]){

case 1:

$im = @ImageCreateFromGIF($BuildFile);

break;

case 2:

$im = @ImageCreateFromJPEG($BuildFile);

break;

case 3:

$im = @ImageCreateFromPNG($BuildFile);

break;

}

if(!$im){

return false;

}

else{

$srcW = ImageSX($im);  # 取得原图宽度;

$srcH = ImageSY($im); # 取得原图高度;

$dstX = 0;

$dstY = 0;

if($File_height==0){

$File_height = $File_width/$srcW*$srcH;

}

if ($srcW*$File_height>$srcH*$File_width){

$fFile_height = round($srcH*$File_width/$srcW);

$dstY = floor(($File_height-$fFile_height)/2);

$fFile_width = $File_width;

}

else {

$fFile_width = round($srcW*$File_height/$srcH);

$dstX = floor(($File_width-$fFile_width)/2);

$fFile_height = $File_height;

}

$ni = ImageCreateTrueColor($File_width,$File_height);

$dstX = ($dstX<0)?0:$dstX;

$dstY = ($dstX<0)?0:$dstY;

$dstX = ($dstX>($File_width/2))?floor($File_width/2):$dstX;

$dstY = ($dstY>($File_height/2))?floor($File_height/s):$dstY;

ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fFile_width,$fFile_height,$srcW,$srcH);

ImageJpeg($ni,$newFile,$rate); # 生成缩略图;

imagedestroy($im);     # imagedestroy(resource) 释放image关联的内存

}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值