在Web 開發中,圖像處理是非常常見的需求。 PHP 作為後端語言,提供了強大的GD 庫支持圖像的各種操作。本文將介紹如何使用PHP 內置的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