我正在寫一個圖像搜索引擎,它允許用戶按顏色搜索。作爲其中的一部分,我需要確定圖像是灰度(僅包含黑色,白色或灰色陰影)還是包含任何顏色。PHP如何檢測圖像是否包含顏色?
如何檢測圖像是否包含黑色,白色和灰色陰影之外的任何像素?
我正在寫一個圖像搜索引擎,它允許用戶按顏色搜索。作爲其中的一部分,我需要確定圖像是灰度(僅包含黑色,白色或灰色陰影)還是包含任何顏色。PHP如何檢測圖像是否包含顏色?
如何檢測圖像是否包含黑色,白色和灰色陰影之外的任何像素?
您必須使用imagecolorat()
(請參見示例#2)遍歷每個像素。
紅色,綠色和藍色的灰度顏色將具有相同的值。如果您發現一個像素的值不同,它是一個包含顏色的圖像(至少在技術上 - 像RGB(100,102,103)
這樣的顏色對人眼而言會呈灰色)。
根據服務器上安裝的光柵圖像套件的不同,您可以使用這些工具獲得比Pekka在此提供的更簡單,更準確的答案。這是否更快是一個公開的論點(見下面的註釋)。
在ImageMagick的樣品(和鏈路)以下時,建議是:
將圖像轉換爲HSL,然後輸出詳細信息 ( 「識別」 統計)
析詳細的信息可以讓你回答你的問題;因此確切,簡單,並且不需要猜測「接近」的灰色圖像。它還提供了您可以使用的其他數據,具體取決於您的工作流程和需求。
來源:http://www.imagemagick.org/discourse-server/viewtopic.php?t=19580
我懷疑這是不是佩卡的解決方案更快,因爲轉換圖像將通過像素基本上是環反正。
所以,Pekka的速度答案。這個答案是精確的。
您可以使用[從另一個SO問題的解決方案](http://stackoverflow.com/questions/1746530/get-image-color) – 2013-02-11 10:30:12