當前位置: 首頁> 最新文章列表> 將imageflip() 與imagecopyresampled() 結合製作縮略圖

將imageflip() 與imagecopyresampled() 結合製作縮略圖

M66 2025-05-31

在處理圖像縮略圖時,我們往往不僅僅需要縮小圖像尺寸,還可能需要對圖像進行翻轉(如水平或垂直翻轉)以滿足某些視覺效果的需求。 PHP 提供了imagecopyresampled()imageflip()這兩個非常實用的函數,分別用於圖像縮放和圖像翻轉。如果你想製作一個經過翻轉且質量較高的縮略圖,這兩個函數可以完美配合使用。

一、了解兩個核心函數

imagecopyresampled()

此函數用於將一部分圖像拷貝並縮放到另一幅圖像中,支持高質量的圖像縮放處理。相比imagecopyresized() ,它的效果更加細膩,適用於生成縮略圖。

imageflip()

imageflip()函數用於對圖像進行翻轉處理,支持水平、垂直以及同時進行水平+垂直翻轉。這個函數自PHP 5.5 起被引入。

二、實際示例:創建翻轉的高質量縮略圖

下面是一個完整的示例代碼,該代碼將一張原始圖像先進行縮放處理生成縮略圖,然後對縮略圖進行水平翻轉:

 <?php
// 原始圖像路徑
$sourcePath = 'https://m66.net/uploads/sample.jpg';

// 獲取圖像信息
list($width, $height, $type) = getimagesize($sourcePath);

// 創建圖像資源
switch ($type) {
    case IMAGETYPE_JPEG:
        $sourceImage = imagecreatefromjpeg($sourcePath);
        break;
    case IMAGETYPE_PNG:
        $sourceImage = imagecreatefrompng($sourcePath);
        break;
    case IMAGETYPE_GIF:
        $sourceImage = imagecreatefromgif($sourcePath);
        break;
    default:
        die('不支持的圖像類型');
}

// 縮略圖尺寸
$newWidth = 150;
$newHeight = intval($height * $newWidth / $width);

// 創建目標圖像資源
$thumbImage = imagecreatetruecolor($newWidth, $newHeight);

// 高質量縮放
imagecopyresampled($thumbImage, $sourceImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

// 翻轉縮略圖(水平翻轉)
imageflip($thumbImage, IMG_FLIP_HORIZONTAL);

// 輸出到瀏覽器或保存
header('Content-Type: image/jpeg');
imagejpeg($thumbImage);

// 銷毀資源
imagedestroy($sourceImage);
imagedestroy($thumbImage);
?>

三、幾點注意事項

  • 使用imageflip()前,確保你的PHP 版本不低於5.5。

  • 為了保持圖像比例,建議按照原圖寬高比計算縮略圖尺寸。

  • 如果是處理PNG 圖像,記得處理透明背景(如使用imagealphablending()imagesavealpha() )。

四、實際應用場景

這種處理方式在電商平台、圖庫、內容管理系統等場景中非常常見,尤其當你需要生成圖像預覽並添加視覺效果(如鏡像)時, imageflip()imagecopyresampled()的組合能極大提高開發效率和圖像質量。

通過本文的講解,你可以輕鬆掌握