anzichè memorizzare il singolo colore predominante, forse è meglio memorizzare nel DB un intero range di colori predominanti. esempio, tutte le gradazioni di blu, o di giallo ecc. non so se puoi farlo memorizzando direttamente il colore d'inizio e quello di fine del range come codice esadecimale (nell'annotazione HTML), e facendo query tipo: WHERE colore>='4A4A4A' AND colore<='5B5B5B'

Comunque credo che di sicuro lo puoi fare analizzando singolarmente le componenti RGB del colore (che hai gia nell'annotazione esadecimale, visto che le 6 cifre del colore sono proprio le "quantità" di Rosso, Verde e Blu aka RGB presi a gruppi di due cifre).

quindi dovresti imporre una serie di fasce di colore, che ti servono per poter definire i vari range. queste fasce le definisci imponendo un colore d'inizio e uno di fine (es.: dal blu chiaro a quello scuro, sarà la fascia "blu"). quindi usando le librerie grafiche GDlib puoi fare una scansione dell'immagine controllando la presenza di colori che rientrano nelle varie fasce che hai imposto, e calcolando per ogni fascia la percentuale di presenza. considera che un'immagine può avere anche più di un "colore predominante", nel senso che possono esserci immagini che hanno due o più fasce di colore con percentuale di presenza dello stesso ordine ('zzo ne so... pensa alle maglie delle squadre di calcio... rosso/blu, bianco/nero ecc). quindi per ogni immagine puoi registrare nel DB ad esempio le 5 fasce di colore che hanno una percentuale di presenza maggiore, e per ogni fascia memorizzi anche tale percentuale di presenza in modo da poter sviluppare un motore di ricerca intelligente che estrae per prime le immagini aventi una percentuale maggiore per quel colore, e mano mano quelle con percentuali inferiori.

per ora non mi viene altro in testa, spero di averti fornito almeno una base per iniziare un progetto. l'idea che hai avuto, comunque, è interessante.