php生成略缩图代码


以下是一个使用PHP和GD库来生成图片略缩图的示例代码。请注意,这段代码假设您已经安装了GD库,并且PHP环境已经配置好了相应的支持。


<?php
// 原始图片路径
$sourceFile = 'path/to/your/image.jpg';

// 生成的略缩图路径
$thumbnailFile = 'path/to/your/thumbnail.jpg';

// 设置略缩图的最大宽度和高度
$maxWidth = 100;
$maxHeight = 100;

// 获取原始图片信息
list($sourceWidth, $sourceHeight, $sourceType) = getimagesize($sourceFile);

// 计算缩放比例
$sourceAspectRatio = $sourceWidth / $sourceHeight;
$thumbnailAspectRatio = $maxWidth / $maxHeight;

if ($sourceAspectRatio >= $thumbnailAspectRatio) {
    // 如果原始图片宽高比大于或等于缩略图宽高比,则按宽度缩放
    $newWidth = $maxWidth;
    $newHeight = $maxWidth / $sourceAspectRatio;
} else {
    // 否则按高度缩放
    $newHeight = $maxHeight;
    $newWidth = $maxHeight * $sourceAspectRatio;
}

// 根据图片类型创建图片资源
switch ($sourceType) {
    case IMAGETYPE_GIF:
        $sourceGdImage = imagecreatefromgif($sourceFile);
        break;
    case IMAGETYPE_JPEG:
        $sourceGdImage = imagecreatefromjpeg($sourceFile);
        break;
    case IMAGETYPE_PNG:
        $sourceGdImage = imagecreatefrompng($sourceFile);
        break;
    default:
        die('Unsupported image type.');
}

// 创建缩略图
$thumbnailGdImage = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($thumbnailGdImage, $sourceGdImage, 0, 0, 0, 0, $newWidth, $newHeight, $sourceWidth, $sourceHeight);

// 保存缩略图
imagejpeg($thumbnailGdImage, $thumbnailFile, 100); // 第二个参数是质量,范围是0(最差)到100(最好)

// 释放图片资源
imagedestroy($sourceGdImage);
imagedestroy($thumbnailGdImage);

echo "Thumbnail created successfully.";
?>

在这段代码中,我们首先设置了原始图片和略缩图的路径,以及略缩图的最大宽度和高度。然后,我们计算了原始图片的宽高比和略缩图的宽高比,以确定如何缩放图片。接下来,我们根据原始图片的类型创建了一个图片资源,并使用`imagecreatetruecolor`函数创建了一个新的图片资源用于存放略缩图。之后,我们使用`imagecopyresampled`函数将原始图片按比例缩放到新创建的略缩图图片资源中。最后,我们使用`imagejpeg`函数将略缩图保存到磁盘上,并释放了所有创建的图片资源。

请注意,这段代码仅处理了JPEG、GIF和PNG格式的图片。如果您的图片是其他格式,您需要根据实际情况修改`switch`语句中的代码以支持该格式。此外,请确保您有权访问和修改指定的文件路径。