1. 图片缩放的基本原理

  • 等比例缩放:保持图片的宽高比,根据需要调整图片的宽度和高度。
  • 非等比例缩放:不保持图片的宽高比,直接指定图片的宽度和高度。

2. PHP图片处理函数

2.1 创建图片资源

imagecreatetruecolor(width, height); // 创建一个真彩图象
imagecreatefromgif(filename); // 从GIF文件创建一个图像资源
imagecreatefrompng(filename); // 从PNG文件创建一个图像资源
imagecreatefromjpeg(filename); // 从JPEG文件创建一个图像资源

2.2 获取图片属性

imagesx(resource); // 返回图像资源宽度
imagesy(resource); // 返回图像资源高度
getimagesize(filename); // 获取图像宽度和高度

2.3 缩放图片

imagecopyresampled(dst_image, src_image, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h);

其中,dst_imagesrc_image分别是目标图像资源和源图像资源,(dst_x, dst_y)(src_x, src_y)分别是目标图像和源图像的起始坐标,(dst_w, dst_h)(src_w, src_h)分别是目标图像和源图像的尺寸。

3. PHP高清图片缩放示例

<?php
// 图片路径
$sourceImage = 'upload/1.jpeg';
// 缩放后的图片路径
$destImage = 'upload/thumb.jpg';
// 缩放后的宽度
$width = 120;
// 缩放后的高度
$height = 120;

// 获取原始图片的宽度和高度
list($widthOrig, $heightOrig) = getimagesize($sourceImage);

// 计算缩放后的尺寸
if ($widthOrig < $heightOrig) {
    $height = ($height / $heightOrig) * $widthOrig;
} else {
    $width = ($width / $widthOrig) * $heightOrig;
}

// 创建画布
$dstImage = imagecreatetruecolor($width, $height);
// 获取原始图像资源
$srcImage = imagecreatefromjpeg($sourceImage);
// 开始缩放图像
imagecopyresampled($dstImage, $srcImage, 0, 0, 0, 0, $width, $height, $widthOrig, $heightOrig);
// 存储缩放后的图片
imagejpeg($dstImage, $destImage);
// 销毁图像资源
imagedestroy($srcImage);
imagedestroy($dstImage);
?>

4. 总结