當前位置: 首頁> 最新文章列表> 批量翻轉一批圖像文件的PHP 腳本編寫

批量翻轉一批圖像文件的PHP 腳本編寫

M66 2025-05-31

在處理圖像時,尤其是批量圖像處理的場景中,經常會遇到需要翻轉(水平或垂直)圖像的需求。 PHP 雖然是一種服務器端語言,但通過其內置的GD 圖像處理庫,我們可以很方便地實現這一功能。本文將教你如何編寫一個PHP 腳本,批量翻轉指定目錄下的所有圖像文件,並將翻轉後的圖像保存到另一個目錄。

一、準備工作

確保你的服務器環境已經啟用了GD 庫。你可以通過以下方式進行檢查:

 <?php
phpinfo();
?>

在瀏覽器中訪問這個腳本後,搜索GD Support ,如果是Enabled,那麼你就可以進行圖像處理操作了。

二、基本邏輯

我們需要完成以下步驟:

  1. 指定一個包含圖像的源目錄;

  2. 遍歷目錄下所有的圖像文件;

  3. 使用GD 庫加載每個圖像;

  4. 翻轉圖像(水平或垂直);

  5. 保存翻轉後的圖像到目標目錄。

三、示例代碼

下面是一個完整的示例腳本:

 <?php

$sourceDir = __DIR__ . '/images/originals';
$targetDir = __DIR__ . '/images/flipped';

// 創建目標目錄(如果不存在)
if (!file_exists($targetDir)) {
    mkdir($targetDir, 0755, true);
}

// 支持的圖像類型
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];

// 掃描源目錄下的文件
$files = scandir($sourceDir);

foreach ($files as $file) {
    $filePath = $sourceDir . '/' . $file;

    // 跳過 . 和 ..
    if (in_array($file, ['.', '..'])) {
        continue;
    }

    // 獲取文件擴展名
    $extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));

    // 過濾非圖像文件
    if (!in_array($extension, $allowedExtensions)) {
        continue;
    }

    // 加載圖像
    switch ($extension) {
        case 'jpg':
        case 'jpeg':
            $image = imagecreatefromjpeg($filePath);
            break;
        case 'png':
            $image = imagecreatefrompng($filePath);
            break;
        case 'gif':
            $image = imagecreatefromgif($filePath);
            break;
        default:
            continue 2;
    }

    // 獲取圖像尺寸
    $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);
    }

    // 保存新圖像
    $targetPath = $targetDir . '/' . $file;
    switch ($extension) {
        case 'jpg':
        case 'jpeg':
            imagejpeg($flipped, $targetPath);
            break;
        case 'png':
            imagepng($flipped, $targetPath);
            break;
        case 'gif':
            imagegif($flipped, $targetPath);
            break;
    }

    // 清理內存
    imagedestroy($image);
    imagedestroy($flipped);

    echo "已處理圖像:$file\n";
}

echo "批量翻轉完成。訪問翻轉後的圖像可前往:http://m66.net/images/flipped/";

?>

四、注意事項

  • 確保目錄權限設置正確,PHP 進程有權訪問和寫入目標目錄;

  • 如果你希望進行垂直翻轉,只需修改翻轉邏輯,將imagecopy()中的坐標進行相應調整即可;

  • 對於透明PNG 或GIF 圖像,可能需要額外的透明處理邏輯,否則會出現黑底。

五、結語

通過本文提供的PHP 腳本,你可以快速實現批量圖像翻轉操作。不論是圖片批量整理、自動化處理,還是在線圖片工具開發,這樣的小功能都能大大提升效率。如果你打算將這個腳本整合到網站上,別忘了加上簡單的用戶界面或文件上傳邏輯,讓功能更完整!