使用PHP生产缩略图
-
(1)获取原图像的大小
对于需要上传或者是给定路径的图像首先使用PHP中getimagesize()函数进行获取图片的大小。
代码如下:
//获取图像路径
$img='./default.jpg';
//输出结果:Array([0] => 122 [1] => 118…… )
print_r(getimagesize($img));
当知道原图像的路径时使用getimagesize()函数获取到图像大小,返回数组中的下标为0的元素表示图像的宽;下标为1的元素表示图像的高。
- (2)计算缩略图的大小
例如:
假设原图像的宽和高分别使用width和width和width和height来表示,通过缩放比例来获取缩略图大小:
//方法一
$percent = 0.2; //定义缩略图的缩放比例
$thu_width = $width * $percent; //计算缩略图的宽
$thu_height = $height * $percent; //计算缩略图的高
//方法二
$thu_width = 100; //定义出缩略图的宽
$thu_height = $thu_width*$heigth/$width;//计算出缩略图的高
- (3)创建画布
画布理解就是画纸。
所以,在生成缩略图前要使用PHP函数创建画布
//方法一:新建画布
$thumb1 = imagecreate(100,50); //基于调色板256方式进行创建
$thumb2 = imagecreatetruecolor(100,50); //真色彩方式创建
//方法二:基于已有图片创建画布
$thumb = imagecreatefrmjpeg("./default.jpg"); //基于已有的jpg图片创建
注:
- imagecreate()函数用于创建基于普通调色板的图像只能支持256色;
- imagecreatetruecolor()函数创建的画布支持的色彩较为丰富但是不支持GIF格式。
当基于已有图片创建画布时,是根据已有图片的类型进行创建的。例如,已知一个png格式的图片,则需要imagecreatefrompng()函数来进行创建画布。
- (4)生成缩略图
使用imagecopyredized()函数实现缩略图的生成:
imagecopyresized($dst,$src,0,0,0,0,$dst_width,$dst_height,$src_width,$src_height);
//$dst表示目标图像
//src表示原图像
//"0,0,0,0"一次表示目标图像和原图像的横坐标和纵坐标
//$dst_width && $dst_height表示目标图像的宽和高
//$src_width && $src_height表示原图像的宽和高
//原图像从原点位置开始按着目标图像的比例进行缩放,并复制到目标图原点位置。