當前位置: 首頁> 最新文章列表> 使用imageflip 函數翻轉圖像並壓縮圖像文件大小

使用imageflip 函數翻轉圖像並壓縮圖像文件大小

gitbox 2025-05-20

在Web 開發中,圖像處理是非常常見的需求。 PHP 作為後端語言,提供了強大的GD 庫支持圖像的各種操作。本文將介紹如何使用PHP 內置的imageflip函數對圖像進行翻轉操作,並結合壓縮技術有效減小圖像文件的大小。

一、什麼是imageflip 函數?

imageflip是PHP 5.5.0 及以上版本引入的函數,用於對圖像資源進行翻轉。它支持水平翻轉、垂直翻轉以及同時水平和垂直翻轉。

函數原型:

 bool imageflip ( resource $image , int $mode )
  • $image :需要翻轉的圖像資源。

  • $mode :翻轉模式,可選值:

    • IMG_FLIP_HORIZONTAL (水平翻轉)

    • IMG_FLIP_VERTICAL (垂直翻轉)

    • IMG_FLIP_BOTH (水平和垂直同時翻轉)

二、翻轉圖像的示例代碼

假設有一張名為input.jpg的圖片,下面演示如何水平翻轉圖像:

 <?php
// 1. 讀取圖像文件
$imagePath = 'input.jpg';
$image = imagecreatefromjpeg($imagePath);
if (!$image) {
    die('無法加載圖片');
}

// 2. 使用 imageflip 翻轉圖像(水平翻轉)
if (!imageflip($image, IMG_FLIP_HORIZONTAL)) {
    imagedestroy($image);
    die('圖像翻轉失敗');
}

// 3. 保存翻轉後的圖像
$outputPath = 'flipped.jpg';
if (!imagejpeg($image, $outputPath)) {
    imagedestroy($image);
    die('保存圖片失敗');
}

// 4. 釋放資源
imagedestroy($image);

echo "圖片翻轉成功,已保存為:{$outputPath}";
?>

三、通過壓縮減小圖像文件大小

PHP 中的imagejpeg函數支持設置壓縮質量,取值範圍為0(最差質量,文件最小)到100(最佳質量,文件最大)。適當調節壓縮質量,可以有效減少圖片大小,同時保持較好的視覺效果。

修改上面代碼中的保存部分:

 // 設置壓縮質量為 75
$quality = 75;
if (!imagejpeg($image, $outputPath, $quality)) {
    imagedestroy($image);
    die('保存圖片失敗');
}

四、完整示例— 翻轉並壓縮圖像

下面是一個綜合示例,演示讀取圖像,水平翻轉後,壓縮保存:

 <?php
$imagePath = 'input.jpg';
$outputPath = 'flipped_compressed.jpg';

// 1. 加載圖像
$image = imagecreatefromjpeg($imagePath);
if (!$image) {
    die('無法加載圖片');
}

// 2. 翻轉圖像(垂直翻轉示例)
if (!imageflip($image, IMG_FLIP_VERTICAL)) {
    imagedestroy($image);
    die('圖像翻轉失敗');
}

// 3. 通過設置壓縮質量保存圖像
$quality = 70; // 可根據需求調整
if (!imagejpeg($image, $outputPath, $quality)) {
    imagedestroy($image);
    die('保存圖片失敗');
}

// 4. 釋放資源
imagedestroy($image);

echo "圖片已成功翻轉並壓縮,保存路徑:{$outputPath}";
?>

五、總結

  • 使用imageflip函數,可以快速實現圖像的水平、垂直或雙向翻轉。

  • 通過imagejpeg函數的第三個參數,可以控制輸出JPEG 圖像的壓縮質量,從而減少文件大小。

  • 合理調整壓縮質量,能夠在保持圖片視覺效果的同時顯著減小文件體積,提升網站加載速度。

更多PHP 圖像處理教程,請訪問https://gitbox.net/tutorials/php-image-processing