21,891
社区成员
发帖
与我相关
我的任务
分享
//$srcfile 原图路径
//$photosmall 缩略图存放路径
//$dstW 宽度
//dstH 高度
//$usebre 为0时不等比缩放,为1时等比缩放
function make_small($srcfile,$photosmall,$dstW,$dstH,$usebre=0)
{
$date = @getimagesize($srcfile);
switch($date[2]){
//1 GIF类型
case 1: $im = imagecreatefromgif($srcfile); break;
//2 JPG类型
case 2: $im = imagecreatefromjpeg($srcfile); break;
//3 PNG类型
case 3: $im = imagecreatefrompng($srcfile); break;
}
$srcW = $date[0]; //原图宽度
$srcH = $date[1]; //原图高度
if($usebre == 1)
{
if($srcW <= $dstW && $srcH <= $dstH){
$dstW = $srcW;
$dstH = $srcH;
}elseif($srcW > $dstW){
$c = $srcH/$srcW;
$dstH = $dstW*$c;
}elseif($srcH > $dstH){
$c = $srcW/$srcH;
$dstW = $dstH*$c;
}
}
if( ($date[0]<$w) || ($date[1]<$h) )
{
echo "需要加水印的图片的长度或宽度比水印".$label."太小,无法生成水印!";
exit;
}
$img_true = imagecreatetruecolor($dstW,$dstH);
!@imagecopyresampled($img_true,$im,0,0,0,0,$dstW,$dstH,$srcW,$srcH) && die("系统暂时无法生成缩略图!");
// imagefilter($img_true, IMG_FILTER_CONTRAST,-5);
// imagefilter($img_true, IMG_FILTER_BRIGHTNESS,7);
!@imagejpeg($img_true,$photosmall) && die("缩略图生成失败,估计文件夹不存在!");
@imagedestroy($im);
@imagedestroy($img_true);
return true;
}
//上面两行imagefilter没有被注释的时候,失真很明显,加了这两行,效果只能好一点点,但还是很明显,
//实在想不同哪里出了错误,看大家的生成缩略图代码,也差不多这样,可我的这段生成的图就偏偏失真很明显
//imagefilter后面的值,我也是反复修改过的,从-10到10之间都测试过
imagejpeg($img_true,$photosmall,100)