當前位置: 首頁> 最新文章列表> 分析GD2 圖像的像素數據並修改顏色

分析GD2 圖像的像素數據並修改顏色

M66 2025-05-17

在PHP 中,GD 庫提供了一系列強大的圖像處理函數,其中imagecreatefromgd2是用於載入.gd2格式圖像的重要函數。 GD2 格式是一種專為快速加載和高壓縮率而設計的圖像格式,雖然使用頻率不如JPEG 或PNG,但在特定場景下非常有用。

本篇文章將介紹如何使用imagecreatefromgd2函數讀取一個GD2 圖像,分析其中每個像素的顏色,並修改特定顏色區域,再將圖像保存為新的文件。

第一步:準備GD2 圖像

首先,你需要一個.gd2格式的圖像文件。可以通過GD 庫將已有圖像保存為GD2 格式,如下所示:

 <?php
$image = imagecreatefrompng('example.png');
imagegd2($image, 'example.gd2');
imagedestroy($image);
?>

第二步:使用imagecreatefromgd2加載圖像

<?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 手冊。

示例文件

你可以在自己的服務器上通過如下地址下載示例文件(請根據自己的路徑替換):