PHP创建缩略图的最终方案
2012-04-24 21:36
141 查看
前一篇文章说了一下imagecopyresampled函数创建缩略图模糊的问题
文中提到imagecopyresized函数可以不计较宽度是否为奇偶的情况,但这个函数又有个问题,就是生成的图片不够清晰,或者说是有点锐化的感觉,图片大点的时候还好,要是缩得比较小,像180*180缩为65*65,如果原图的锐化程度稍高,那缩成小图后,基本上也就看不清楚内容了。如下图这种类型。
其实imagecopyresampled生成缩略图的效果真的不错,如果不是因为奇偶关系的话。一般锐度高的,它会变得比较柔和,看着很舒服。
所以用imagecopyresampled是没有错的。那就要解决模糊的问题,其实奇偶问题还是很好解决的,方法:
首页,看看你要生成缩略图大小的宽,是偶数还是奇数,这里用偶数好了
其次,在生成缩略图之前,检测原图的宽,是奇数还是偶数,如果是偶数,不管它,如果是奇数,就将目标宽度+1
最后,按新的宽度生成缩略图
这样子,可能生成的缩略图比预定的缩略图大1px,从显示的角度上讲,基本上是没有什么问题的。切记,在显示的时候,不要为它高死宽高,不然很有可能再次变模糊。
下面是我用来生成头像缩略图的代码,一共要生成3种大小的头像,65px,120px,180px,参数$path为原图的路径
$jo用于判断奇偶
$targ_w = $targ_h =$jo?$sys[$i]+1:$sys[$i]; 就是根据奇偶生成目标大小的宽高。
文中提到imagecopyresized函数可以不计较宽度是否为奇偶的情况,但这个函数又有个问题,就是生成的图片不够清晰,或者说是有点锐化的感觉,图片大点的时候还好,要是缩得比较小,像180*180缩为65*65,如果原图的锐化程度稍高,那缩成小图后,基本上也就看不清楚内容了。如下图这种类型。
其实imagecopyresampled生成缩略图的效果真的不错,如果不是因为奇偶关系的话。一般锐度高的,它会变得比较柔和,看着很舒服。
所以用imagecopyresampled是没有错的。那就要解决模糊的问题,其实奇偶问题还是很好解决的,方法:
首页,看看你要生成缩略图大小的宽,是偶数还是奇数,这里用偶数好了
其次,在生成缩略图之前,检测原图的宽,是奇数还是偶数,如果是偶数,不管它,如果是奇数,就将目标宽度+1
最后,按新的宽度生成缩略图
这样子,可能生成的缩略图比预定的缩略图大1px,从显示的角度上讲,基本上是没有什么问题的。切记,在显示的时候,不要为它高死宽高,不然很有可能再次变模糊。
下面是我用来生成头像缩略图的代码,一共要生成3种大小的头像,65px,120px,180px,参数$path为原图的路径
$jo用于判断奇偶
$targ_w = $targ_h =$jo?$sys[$i]+1:$sys[$i]; 就是根据奇偶生成目标大小的宽高。
public function save_avatar($path,$uid){ $jpeg_quality = 90; $src = $path; $size=getimagesize($src); $jo=$size[0]%2==0?0:1; $sys=Route::load_config('sys'); $avatarinfo=$this->getavatarinfo($uid); $attdir=$avatarinfo[0]; $path=''; if(!function_exists(imagecreatefromjpeg)){ return false; } $img_r=imagecreatefromjpeg($src); $srcW = ImageSX($img_r); $srcH = ImageSY($img_r); for($i=0;$i<=2;$i++){ $src_new=$attdir.$avatarinfo[1].'_avatar_'.$sys[$i].'.jpg'; $targ_w = $targ_h =$jo?$sys[$i]+1:$sys[$i]; $dst_r = imagecreatetruecolor( $targ_w, $targ_h ); imagecopyresampled($dst_r,$img_r,0,0,0,0,$targ_w,$targ_h,$srcW,$srcH); imagejpeg($dst_r,$src_new,$jpeg_quality); $path.=$i==0?SYS_URL.$src_new:"|".SYS_URL.$src_new; } return true; }
相关文章推荐
- php生成缩略图填充白边(等比缩略图方案)
- PHP创建缩略图造成图片质量低下的完美解决方法
- PHP创建缩略图造成图片质量低下的完美解决方法
- php 使用GD库创建图片缩略图
- php实现从上传文件创建缩略图的方法
- PHP创建图片缩略图函数
- PHP学习创建水印,缩略图
- php 使用GD库上传图片以及创建缩略图
- PHP创建缩略图
- PHP创建缩略图
- PHP创建缩略图造成图片质量低下的完美解决方法
- PHP中imagecopyresampled函数创建缩略图参数详解
- php 创建图片缩略图
- php使用GD库创建图片缩略图的方法
- PHP创建缩略图造成图片质量低下的完美解决方法
- php创建缩略图
- PHP创建缩略图造成图片质量低下的完美解决方法
- php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
- php 使用GD库上传图片以及创建缩略图
- php使用GD创建保持宽高比缩略图的方法