在進行圖像處理時,鏡像或對稱效果是一種常見且頗具藝術感的手法。 PHP 提供了一個簡潔的函數—— imageflip() ,可以輕鬆實現圖像的水平翻轉、垂直翻轉或同時翻轉兩者,從而創造出對稱藝術效果。本文將帶你了解imageflip()的基本用法,並通過一個完整示例演示如何用它製作出對稱圖像。
imageflip()是PHP 的GD 庫中用於圖像翻轉的函數。它的語法如下:
bool imageflip(GdImage $image, int $mode)
$image :要處理的圖像資源。
$mode :翻轉模式,可以是以下三種之一:
IMG_FLIP_HORIZONTAL :水平翻轉(鏡像左右顛倒)。
IMG_FLIP_VERTICAL :垂直翻轉(鏡像上下顛倒)。
IMG_FLIP_BOTH :同時進行水平與垂直翻轉。
這個函數從PHP 5.5.0 開始引入,因此請確保你的運行環境支持。
假設我們有一張圖片,我們希望通過水平翻轉來製作一個左右對稱的圖像,方法是:
將原圖分割為一半。
複製這半張圖像。
用imageflip()進行水平翻轉。
將翻轉後的部分拼接到原圖旁邊,形成對稱效果。
下面是一個完整的PHP 示例代碼,實現了上述操作:
<?php
// 載入原圖
$sourcePath = 'https://m66.net/images/sample.jpg';
$sourceImage = imagecreatefromjpeg($sourcePath);
$width = imagesx($sourceImage);
$height = imagesy($sourceImage);
// 創建一半的畫布
$halfWidth = (int)($width / 2);
$halfImage = imagecreatetruecolor($halfWidth, $height);
// 複製左半部分
imagecopy($halfImage, $sourceImage, 0, 0, 0, 0, $halfWidth, $height);
// 創建翻轉的副本
$flippedHalf = imagecreatetruecolor($halfWidth, $height);
imagecopy($flippedHalf, $halfImage, 0, 0, 0, 0, $halfWidth, $height);
imageflip($flippedHalf, IMG_FLIP_HORIZONTAL);
// 創建新畫布,用來放置對稱圖像
$symmetryImage = imagecreatetruecolor($width, $height);
// 合併原始左半與翻轉右半
imagecopy($symmetryImage, $halfImage, 0, 0, 0, 0, $halfWidth, $height);
imagecopy($symmetryImage, $flippedHalf, $halfWidth, 0, 0, 0, $halfWidth, $height);
// 輸出到瀏覽器
header('Content-Type: image/jpeg');
imagejpeg($symmetryImage);
// 清理資源
imagedestroy($sourceImage);
imagedestroy($halfImage);
imagedestroy($flippedHalf);
imagedestroy($symmetryImage);
?>
運行上述代碼後,你將得到一張左右對稱的圖像。例如,如果原圖是人物肖像,那麼輸出圖像將展現一個完美對稱的“鏡像人臉”,極具藝術感。
如果想實現上下對稱,將IMG_FLIP_HORIZONTAL替換為IMG_FLIP_VERTICAL即可。
imageflip()的圖像處理是原地進行的,因此建議複製原圖再處理,以免修改源文件。
imagecreatefromjpeg()也可替換為imagecreatefrompng()或imagecreatefromgif() ,取決於你的圖像格式。
imageflip()是一個極為實用的PHP 圖像處理工具。配合基本的GD 庫函數,你可以輕鬆實現各種對稱藝術效果,適用於頭像處理、創意圖像、拼圖遊戲甚至是生成AI 視覺素材等場景。下一次當你想為圖像增添一點“鏡像魔法”,不妨試試它!