缩略图总是失真,拿他没辙

铁马渡江河 2009-12-17 12:03:30

//$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之间都测试过
...全文
188 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
y244360439 2012-01-02
  • 打赏
  • 举报
回复
我做了一款缩略图不失真,代码贴在我的博客上http://www.wodeblog.com/archives/117
renqiang_888 2009-12-17
  • 打赏
  • 举报
回复
可以复制一分看看失真吗?









讲故事
铁马渡江河 2009-12-17
  • 打赏
  • 举报
回复
我试过,imagejpeg的参数调到100,清晰度还是不够,而且文件反倒大了2倍
江南昆虫 2009-12-17
  • 打赏
  • 举报
回复
还有,如果你原本的图片是gif格式,输出时用imagegif吧,否则转为JPEG后即使质量100也可能效果不好。
江南昆虫 2009-12-17
  • 打赏
  • 举报
回复
加个JPEG质量参数试试
imagejpeg($img_true,$photosmall,100)
铁马渡江河 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 renqiang_888 的回复:]
可以复制一分看看失真吗?


讲故事
[/Quote]

...“复制”,什么意思啊?

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧