当前位置: 首页> 最新文章列表> 翻转+压缩+保存:一个完整的图像处理流程

翻转+压缩+保存:一个完整的图像处理流程

M66 2025-05-17

在日常开发中,图像处理是一项非常常见的需求,比如图像翻转(镜像)、压缩图片大小、保存优化后的图像等。在 PHP 中,我们可以使用内置的 GD 库轻松实现这些功能。

本文将一步一步带你通过 PHP 完整掌握图像翻转、压缩与保存的处理流程。无论你是正在开发图片上传接口,还是在构建图像管理系统,这篇文章都能为你提供实用的参考。

一、准备工作:确认 GD 库是否启用

首先确保你的服务器已启用 GD 库。在 PHP 中查看是否支持 GD 库:

<?php
if (extension_loaded('gd')) {
    echo "GD 库已启用";
} else {
    echo "请安装并启用 GD 库";
}
?>

二、加载图像

我们以 JPEG 图片为例加载图像文件:

<?php
$imagePath = 'uploads/sample.jpg';
$image = imagecreatefromjpeg($imagePath);
if (!$image) {
    die('加载图像失败');
}
?>

三、图像翻转(水平/垂直镜像)

水平翻转(镜像)

<?php
function flipImageHorizontally($image) {
    $width = imagesx($image);
    $height = imagesy($image);
    $flipped = imagecreatetruecolor($width, $height);
    
    for ($x = 0; $x < $width; $x++) {
        imagecopy($flipped, $image, $width - $x - 1, 0, $x, 0, 1, $height);
    }
    return $flipped;
}

$image = flipImageHorizontally($image);
?>

垂直翻转

<?php
function flipImageVertically($image) {
    $width = imagesx($image);
    $height = imagesy($image);
    $flipped = imagecreatetruecolor($width, $height);
    
    for ($y = 0; $y < $height; $y++) {
        imagecopy($flipped, $image, 0, $height - $y - 1, 0, $y, $width, 1);
    }
    return $flipped;
}

// $image = flipImageVertically($image); // 如需垂直翻转取消注释
?>

四、图像压缩

图像压缩通常是指在保存时调整图像的质量。对于 JPEG 图像,可以在保存时设置压缩质量(0-100):

<?php
$compressedPath = 'uploads/compressed.jpg';
$quality = 75; // 数值越小,压缩越高,图像质量越低

if (!imagejpeg($image, $compressedPath, $quality)) {
    die('压缩并保存图像失败');
}
?>

五、保存并输出处理后的图像链接

成功压缩和保存之后,可以给出图像访问链接,例如:

<?php
echo '图像处理成功,访问链接:<a href="https://m66.net/uploads/compressed.jpg">点击查看图片</a>';
?>

六、完整封装代码(附加)

你也可以将整个流程封装为函数,提升复用性:

<?php
function processImage($inputPath, $outputPath, $flipType = 'horizontal', $quality = 80) {
    $image = imagecreatefromjpeg($inputPath);
    if (!$image) return false;

    if ($flipType === 'horizontal') {
        $image = flipImageHorizontally($image);
    } elseif ($flipType === 'vertical') {
        $image = flipImageVertically($image);
    }

    return imagejpeg($image, $outputPath, $quality);
}
?>

七、总结

通过 PHP 的 GD 库,我们可以非常灵活地对图像进行处理,包括:

  • 加载图像文件;

  • 翻转(水平/垂直);

  • 压缩与保存;

  • 输出处理结果。

这套流程适用于大部分 Web 应用场景,特别是在用户上传图片后需要优化处理的功能。

如果你有更多关于图像处理的需求,比如裁剪、加水印、调整尺寸等,GD 库同样可以胜任,后续我们也会带来更进阶的图像处理文章,敬请关注!