在PHP 中,GD 庫提供了一系列強大的圖像處理函數,其中imagecreatefromgd2是用於載入.gd2格式圖像的重要函數。 GD2 格式是一種專為快速加載和高壓縮率而設計的圖像格式,雖然使用頻率不如JPEG 或PNG,但在特定場景下非常有用。
本篇文章將介紹如何使用imagecreatefromgd2函數讀取一個GD2 圖像,分析其中每個像素的顏色,並修改特定顏色區域,再將圖像保存為新的文件。
首先,你需要一個.gd2格式的圖像文件。可以通過GD 庫將已有圖像保存為GD2 格式,如下所示:
<?php
$image = imagecreatefrompng('example.png');
imagegd2($image, 'example.gd2');
imagedestroy($image);
?>
<?php
$gdImage = imagecreatefromgd2('example.gd2');
if (!$gdImage) {
die('無法加載 GD2 圖像');
}
?>
我們可以通過imagesx()和imagesy()獲取圖像的寬度和高度,然後遍歷每一個像素點使用imagecolorat()讀取顏色值。
<?php
$width = imagesx($gdImage);
$height = imagesy($gdImage);
for ($y = 0; $y < $height; $y++) {
for ($x = 0; $x < $width; $x++) {
$rgb = imagecolorat($gdImage, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
// 示例:如果顏色接近白色,修改為藍色
if ($r > 200 && $g > 200 && $b > 200) {
$newColor = imagecolorallocate($gdImage, 0, 0, 255);
imagesetpixel($gdImage, $x, $y, $newColor);
}
}
}
?>
修改完成後,我們可以將處理後的圖像保存為新的PNG 或GD2 文件,也可以直接輸出到瀏覽器:
<?php
// 保存為新的 GD2 文件
imagegd2($gdImage, 'modified.gd2');
// 或保存為 PNG
imagepng($gdImage, 'modified.png');
// 清理內存
imagedestroy($gdImage);
?>
imagecolorallocate()每次分配顏色可能會導致顏色資源重複,為了優化,可以將常用顏色預先分配。
GD2 文件可選使用壓縮和目錄結構,更多高級選項可參考PHP 手冊。
你可以在自己的服務器上通過如下地址下載示例文件(請根據自己的路徑替換):