2010-02-26 45 views
5

我有一個腳本,從圖像中提取最常見的顏色。我想將這些數據存儲在MySQL中,然後能夠根據點擊顏色來拉出圖像。例如,如果用戶點擊紅色,我想要拉出其他圖像的顏色爲「紅色」。我不確定如何在一系列的顏色值中搜索或者實際存儲在數據庫中的值。理想情況下,我想向用戶展示漸變色帶,並讓他們點擊它以查找與他們點擊的顏色接近的圖像。如何將HTML顏色代碼存儲在MySQL數據庫中,然後搜索一個或多個範圍?

任何幫助,指針或關鍵字我可以用谷歌瞭解更多信息將是用戶。

+0

可能重複與此[數據庫設計存儲圖像色彩圖案在MySQL用於通過顏色搜索圖像] [1] [1]:http://stackoverflow.com/questions/19024769/database-設計到存儲的圖像顏色模式在MySQL中的搜索圖像逐個col – Sendy 2013-10-05 21:01:45

回答

0

有一個class on PHPclasses.org,承諾找到「主色」。我自己並沒有使用它,所以我不能說它的質量,但它已經由PHPclasses進行了審查,這通常是值得檢查的。

+0

該op說:「我有一個腳本,提取圖像中最常見的顏色」,你剛纔給出他另一個腳本從圖像中提取顏色。他想知道如何搜索提取的顏色。 – TheCarver 2012-11-15 21:32:37

3

看看我對這個question的回答。基本上,你分別存儲每個組件的十六進制值,然後你可以用一個簡單的mySQL查詢來搜索它們。我想喲可以通過迭代圖像中的每種顏色並將頂部x顏色放入表中來填充表格。

select imageName from imageColors where (ABS(red - $redHex) + ABS(blue-$blueHex) + ABS(green - $greenHex) < $threshold)

$threshold是顏色之間的最大距離。

+0

當你說$ redHex,$ blueHex,$ greenHex,你的意思是R G B值,而不是十六進制值,因爲你不能減去一個十六進制值 - 你能嗎? – Ash 2012-10-24 18:53:11

+0

十六進制只是基數16,所以是的,你可以在base16中加上減法乘法積分。將INT存儲在數據庫中然後在另一側轉換爲十六進制將會更容易。 – 2012-10-25 23:43:10

1

我的第一個想法是,您最好的選擇是使用6位十六進制,並將每個組件(紅色,綠色,藍色)存儲在單獨的字段中。

尋找「紅色」的東西?選擇紅色數高,綠色和藍色相對較低的記錄,然後準備好調整您的截止點。

相關問題