Pregunta

¿Cómo desarrollar algo similar a lo que es se describe en este DabbleDB entrada de blog ?

¿Fue útil?

Solución

Sólo respondieron a un algo relacionado SO pregunta ayer . Algunos de los conceptos allí, junto con el (en el cubo GIT) podría ser un buen comienzo .

evolucionar menciona, el escaneo de cada píxel de una imagen (o incluso sólo de la frontera) puede ser intensivo en recursos. Sin embargo, en este caso (ya que desea identificar mucho más que sólo un promedio de color) puede ser el camino a seguir. Cambiar el tamaño del logotipo para un tamaño sano juicio ayudaría a reducir la carga del servidor, y realmente no debería afectar a la salida.

Actualizar . Para estos ejemplos asumen un objeto de imagen se ha creado y $width y $height se han determinado utilizando imagesx(), getimagesize(), etc.

Color de fondo

  

Lo primero que teníamos que hacer era averiguar el color de fondo del logotipo. Y eso es todo lo hizo la primera versión, mediante el uso de los píxeles de la esquina.

A continuación, utilizar imagecolorat() para encontrar los colores de las esquinas. Alternativamente, utilizar el método de promedio color del borde de la respuesta que se hace referencia en la parte superior.

$color = imagecolorat($image, 0, 0); //do this for each corner
$rgb = imagecolorsforindex($image, $color); //convert each color to a RGB array
//average colors

Saturación

  

Resulta que la teoría del color tiene una forma de medir el grado de interés: la saturación. Así llegamos a cabo un color interesante desde el logotipo. Utilizando el mismo color para el borde y las cosas de texto hecho un poco más monótono de lo que queríamos, así que finalmente decidimos probar y agarrar dos colores interesantes si están presentes.

Puede utilizar el RGB a HSL funciones en el imagecolorsforindex() página del manual junto con el href="http://gist.github.com/237185" rel="nofollow noreferrer"> escaneo de código menciona en la parte superior para encontrar los valores de color con alta saturación.

luminancia

  

Nos volvimos de nuevo a la teoría del color y nos dimos cuenta que podíamos usar la luminancia del color del borde para decidir si el texto negro o blanco era más adecuado.

Esta SO hilo listas diferentes RGB a los cálculos de luminancia. No estoy seguro de qué método es el mejor (o técnicamente correcta) para convertir las imágenes RGB 0-255. Pero por lo que este es el cumplimiento (debe ser el texto oscuro o claro), no creo que va a importa que mucho.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top