在PHP中处理图片等比缩放是一个常见的任务,以下是一个具体的实例我们将使用GD库来处理图片。

实例描述

假设我们有一个图片文件`example.jpg`,我们需要将其等比缩放到指定的大小,比如宽度为200像素,高度为150像素。

代码实例

```php

// 指定源文件和目标文件

$sourceImage = 'example.jpg';

$targetImage = 'example_resized.jpg';

// 获取源文件信息

list($sourceWidth, $sourceHeight, $sourceType) = getimagesize($sourceImage);

// 设置目标图片的宽度和高度

$targetWidth = 200;

$targetHeight = 150;

// 根据源图片的宽高比计算目标图片的宽高

$ratio = $sourceWidth / $sourceHeight;

if ($targetWidth / $targetHeight > $ratio) {

$targetWidth = $targetHeight * $ratio;

} else {

$targetHeight = $targetWidth / $ratio;

}

// 根据源图片类型创建新图像

switch ($sourceType) {

case IMAGETYPE_JPEG:

$sourceImage = imagecreatefromjpeg($sourceImage);

break;

case IMAGETYPE_PNG:

$sourceImage = imagecreatefrompng($sourceImage);

break;

case IMAGETYPE_GIF:

$sourceImage = imagecreatefromgif($sourceImage);

break;

default:

die('Unsupported image type!');

}

// 创建目标图像

$targetImage = imagecreatetruecolor($targetWidth, $targetHeight);

// 调整透明度(仅对PNG和GIF有效)

if ($sourceType == IMAGETYPE_PNG || $sourceType == IMAGETYPE_GIF) {

$transparent = imagecolorallocatealpha($targetImage, 0, 0, 0, 127);

imagefill($targetImage, 0, 0, $transparent);

imagecolortransparent($targetImage, $transparent);

}

// 将源图像复制到目标图像

imagecopyresampled($targetImage, $sourceImage, 0, 0, 0, 0, $targetWidth, $targetHeight, $sourceWidth, $sourceHeight);

// 输出目标图像

switch ($sourceType) {

case IMAGETYPE_JPEG:

imagejpeg($targetImage, $targetImage);

break;

case IMAGETYPE_PNG:

imagepng($targetImage, $targetImage);

break;

case IMAGETYPE_GIF:

imagegif($targetImage, $targetImage);

break;

}

// 释放内存

imagedestroy($sourceImage);

imagedestroy($targetImage);

>

```

表格展示

步骤操作描述
1获取源文件信息使用`getimagesize()`获取图片的宽度和高度
2设置目标尺寸根据需求设置目标图片的宽度和高度
3计算比例根据源图片的宽高比计算目标图片的宽高
4创建图像资源根据源图片类型创建新的图像资源
5创建目标图像创建一个与目标尺寸相匹配的新图像
6调整透明度对于PNG和GIF图片,设置透明度
7复制图像使用`imagecopyresampled()`函数将源图像复制到目标图像
8输出图像根据源图片类型输出目标图像
9释放内存使用`imagedestroy()`释放图像资源

通过以上实例,你可以轻松地在PHP中实现图片的等比缩放。