Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conception de base de données pour stocker le motif de couleur de l'image dans MySQL pour la recherche Image par couleur

Vous devriez normaliser cela.

3 tableaux :

Image {image_id, name}
Colors {color_id, red, green, blue, alpha}
ImageHasColor {image_id, color_id, number_of_times_appeared}

L'insertion de données doit être simple, utilisez ...insert_id pour obtenir l'identifiant de la ligne que vous venez d'insérer.

Sélectionnez avec des jointures comme :

SELECT * FROM
Image i
JOIN ImageHasColors h
ON i.image_id = h.image_id
JOIN Colors c
ON c.color_id = h.color_id
ORDER BY i.image_id

Consultez ce lien pour savoir comment convertir la couleur HEX en valeurs RVB :http://bavotasan.com/2011/convert-hex-color-to-rgb-using-php/

Rechercher les 10 images les plus rouges :

SELECT * FROM
Image i
JOIN ImageHasColors h
ON i.image_id = h.image_id
JOIN Colors c
ON c.color_id = h.color_id
WHERE c.red > 200
AND   c.green < 50
AND   c. green < 50
ORDER BY h.number_of_times_appeared
LIMIT 10

Rechercher des images plutôt noires :

SELECT * FROM
Image i
JOIN ImageHasColors h
ON i.image_id = h.image_id
JOIN Colors c
ON c.color_id = h.color_id
WHERE c.red < 30
AND   c.green < 30
AND   c. green < 30
ORDER BY h.number_of_times_appeared
LIMIT 10