2011-07-25 101 views
3

我正在尋找一個方法槽javascript找到圖像的主色。可能通過一些算法來聚集一些地區。Javascript圖像主簇顏色

問題,因爲如果我使用像素,將會使用更多的像素。防爆。如果我有棕色和非常棕色的顏色,那麼一部分是白色的。主要顏色可能是白色。而且不需要顏色平均值,因爲無法表示圖像的真實顏色。

任何建議的插件,代碼實施,網站。在此先感謝

UPDATE

事情是這樣的:

http://www.cssdrive.com/imagepalette/

這裏有一些解釋,不知道我是否可以重複使用js代碼。

http://harthur.wordpress.com/2009/12/18/getting-the-color-scheme-of-a-website-using-canvas-and-hierarchical-clustering/

回答

3

這是艱難的,但可行的。

第一步是從圖像中獲取像素數據 - 要做到這一點,您需要draw the image onto a canvas element and get the pixel data。請注意,Same Origin Policy適用於圖像,因此圖像必須與腳本位於同一臺服務器上,否則您需要使用代理。

現在,您可以將算法應用於像素數據以查找「主」顏色。最簡單的選擇是平均,但聽起來你不想要那樣。那裏有很多聚類算法;可能你想要的是執行color quantization以將調色板中的顏色數量減少到一些小數字,然後採用表示圖像中最大像素的顏色。

median cut algorithm是一個很好的,相對簡單的選項,雖然它仍然是一個相當數量的編碼。我從事一個小型的業餘愛好項目,在Javascript中實現這個算法 - 你可以用see my code here。它不會爲你開箱,但我可能爲你做了大部分的努力工作。

+0

謝謝,會檢查我是否可以使用你的插件。已經使用畫布從圖像獲取數據。但需要一個插件來聚集數據(像素),然後我可以使用你的代碼。 –

+0

pv沒有被定義出現 –

+0

是的,對不起 - 目前它對protovis庫(http://mbostock.github.com/protovis/)有依賴性。這只是一些小功能 - 我會將它們轉移到要點中。 – nrabinowitz