2010-02-26 67 views
5

Tengo un script que extrae los colores más comunes de una imagen. Quiero almacenar esta información en MySQL y luego poder extraer imágenes según el clic de un color. Por ejemplo, si el usuario hace clic en un color rojo, quiero sacar otras imágenes que tengan un conteo alto para los colores "rojos". No estoy seguro de cómo buscar dentro de un rango de valores de color o qué valores almacenar realmente en la base de datos. Idealmente, me gustaría presentarle al usuario una banda de gradiente y hacer que haga clic en ella para encontrar imágenes que tengan un color parecido al que hicieron clic.¿Cómo puedo almacenar códigos de color HTML en una base de datos MySQL y luego buscar un rango o colores?

Cualquier ayuda, punteros o palabras clave que pueda utilizar para Google para obtener más información sería útil.

+0

posible duplicado con esta [Diseño de bases de patrón de color imagen de la tienda en MySQL para la búsqueda Imagen de color] [1] [1]: http://stackoverflow.com/questions/19024769/database- design-to-store-image-color-pattern-in-mysql-for-search-image-by-col – Sendy

Respuesta

0

Hay un class on PHPclasses.org que promete encontrar el "color dominante". No lo he usado yo mismo, así que no puedo decir nada sobre su calidad, pero ha sido revisado por PHPclasses, que por lo general hace que valga la pena echarle un vistazo.

+0

El op dijo "Tengo un script que extrae los colores más comunes de una imagen", acabas de dar él otro script que extrae colores de una imagen. Él quiere saber cómo buscar los colores extraídos. – TheCarver

3

Eche un vistazo a mi respuesta a este question. Básicamente, almacena los valores hexadecimales de cada componente por separado, luego puede buscarlos con una simple consulta mySQL. Supongo que podría poblar una tabla al iterar cada color en una imagen y colocar los mejores x colores en la tabla.

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

$threshold es la distancia máxima entre los colores.

+0

cuando dices $ redHex, $ blueHex, $ greenHex, ¿te refieres a los valores R G B, en oposición a los valores hexadecimales, ya que no puedes restar un valor hexadecimal, ¿o sí? – Ash

+0

hexadecimal es solo base 16, entonces sí puede agregar restar multiplicar integrar en base16. Sería mucho más fácil almacenar como INT en la base de datos y luego convertir a hexadecimal en el otro lado. –

1

Mi primer pensamiento es que su mejor opción es usar hexadecimal de 6 dígitos y almacenar cada componente (rojo, verde, azul) en un campo separado.

¿Busca algo "rojo"? Seleccione los registros con un alto recuento de rojos, y relativamente bajo verde y azul, y luego estar listo para ajustar sus puntos de corte.

Cuestiones relacionadas