當前位置: 首頁> 最新文章列表> 翻轉+壓縮+保存:一個完整的圖像處理流程

翻轉+壓縮+保存:一個完整的圖像處理流程

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 庫同樣可以勝任,後續我們也會帶來更進階的圖像處理文章,敬請關注!