实际开发中,一般在上传图片时就需要对图片进行压缩操作,想要压缩图片可以使用 imagecopyresized() 或者 imagecopyresampled() 函数,而使用 imagecopyresampled() 函数处理后图片的质量会好一些,所以在进行图片压缩时可以优先使用 imagecopyresampled() 函数。
首页来看一下这两个函数的语法格式
imagecopyresized(resource $dst_image, resource $src_image, int $dst_x, int $dst_y, int $src_x, int $src_y, int $dst_w, int $dst_h, int $src_w, int $src_h)
imagecopyresampled(resource $dst_image, resource $src_image, int $dst_x, int $dst_y, int $src_x, int $src_y, int $dst_w, int $dst_h, int $src_w, int $src_h)
两个函数的参数是完全一样的,说明如下:
$dst_image:目标图象连接资源。
$src_image:源图象连接资源。
$dst_x:目标 X 坐标点。
$dst_y:目标 Y 坐标点。
$src_x:源的 X 坐标点。
$src_y:源的 Y 坐标点。
$dst_w:目标宽度。
$dst_h:目标高度。
$src_w:源图象的宽度。
$src_h:源图象的高度。
这两个函数都可以将一幅图像中的一块矩形区域拷贝到另一个图像中,而 imagecopyresampled() 函数更是可以平滑地插入像素值,因此,在减小了图像的大小的同时仍然保持极大的清晰度。
通俗来讲就是,这两个函数可以从图像 $src_image 的($src_x,$src_y)位置,截取一个宽 $src_w 高 $src_h 的矩形区域,并将其复制到图像 $dst_image 中($dst_x,$dst_y)处,宽 $dst_w 高 $dst_h 的矩形区域中。
如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸。而坐标则是指的矩形区域的左上角。另外,两个函数都可用来在同一幅图($dst_image 和 $src_image 相同)内部进行拷贝,但如果拷贝区域交迭的话则结果不可预知。
【示例】使用 imagecopyresampled() 函数来压缩图片尺寸。