在我的一個個人項目中,我需要根據上傳的圖片動態調整網站的主題色。手動提取每張圖片的主色調顯然是不現實的,因此我開始尋找一個自動化的解決方案。我嘗試了一些在線工具和復雜的圖像處理庫,但它們要么不夠靈活,要么過于復雜,難以集成到我的項目中。
偶然間,我發現了 ksubileau/color-thief-php 這個庫。它是一個 php 庫,可以從圖像中提取主色調或代表性的調色板。它是 color thief JavaScript 庫的 php 移植版本,使用了來自 leptonica 庫的 mmcq(改進的中值切割量化)算法。
ksubileau/color-thief-php 的優勢在于:
- 簡單易用: 只需要幾行代碼即可完成圖像主色調的提取。
- 支持多種圖像格式: 支持 JPEG、PNG、GIF 和 WEBP 圖像。
- 多種圖像處理擴展支持: 支持 GD, Imagick 或 Gmagick 擴展。
- 靈活的配置選項: 可以調整提取質量、指定提取區域、選擇輸出格式。
- 無需復雜的圖像處理知識: 開發者無需深入了解圖像處理算法,即可輕松使用。
安裝
使用 Composer 安裝 ksubileau/color-thief-php 非常簡單:
立即學習“PHP免費學習筆記(深入)”;
composer require ksubileau/color-thief-php
使用示例
以下是一個簡單的示例,展示如何提取圖像的主色調:
require_once 'vendor/autoload.php'; use ColorThiefColorThief; $sourceImage = 'path/to/your/image.jpg'; // 圖像路徑 try { $dominantColor = ColorThief::getColor($sourceImage); // $dominantColor 是一個包含 RGB 值的數組,例如:[255, 0, 0] echo "主色調:RGB(" . implode(',', $dominantColor) . ")"; } catch (Exception $e) { echo "提取主色調失敗:" . $e->getMessage(); }
你還可以提取圖像的調色板:
require_once 'vendor/autoload.php'; use ColorThiefColorThief; $sourceImage = 'path/to/your/image.jpg'; // 圖像路徑 try { $palette = ColorThief::getPalette($sourceImage, 8); // 提取 8 種顏色 // $palette 是一個包含多個 RGB 數組的數組 echo "調色板:"; foreach ($palette as $color) { echo "RGB(" . implode(',', $color) . ") "; } } catch (Exception $e) { echo "提取調色板失?。?quot; . $e->getMessage(); }
通過簡單的配置,你可以調整提取質量、指定提取區域,甚至選擇不同的輸出格式(例如 RGB 字符串、十六進制顏色值等)。
實際應用效果
在我的項目中,我使用 ksubileau/color-thief-php 提取用戶上傳圖片的主色調,并將其應用到網站的背景色、按鈕顏色和文本顏色上。這使得網站的視覺風格能夠與用戶上傳的圖片保持一致,提升了用戶體驗。
總而言之,ksubileau/color-thief-php 是一個非常實用的 PHP 庫,它能夠幫助開發者輕松提取圖像的主色調和調色板,為網站帶來更具吸引力的視覺效果。它簡單易用、功能強大,并且具有靈活的配置選項,非常適合在各種 Web 開發項目中使用。