logoExtra: paletaImagen

Descripción: Obtenemos la paleta de colores de una imágen pasada como parámetro.


A continuación mostramos los apuntes asociados a este extra:

Paleta de colores desde imagen
Durante la escritura de los apuntes, hay veces que he necesitado obtener un determinado color de una imagen y para esos casos lo que creo que es de uso más habitual es el "cuentagotas" de los editores gráficos.
// Descripción para sindicación:
/*
    [rss]Obtenemos la paleta de colores de una imágen pasada como parámetro.[/rss]
*/
function dec_hex($color)    {
    $c = dechex($color);
    if (strlen($c) == 1)    $c = "0$c";
    return strtoupper($c);
}
$tipo = $_FILES["paletera"]["type"];
$vale = substr($tipo, 0, 6) == "image/";
if ($vale)    {
    $paletera = $_FILES["paletera"]["tmp_name"];
    list($ancho, $alto) = @getimagesize($paletera);
    if ($ancho > 800 || $alto > 800)    {
        $error = 1;
        $colores = array("000000");
    }
    else    {
        $apaisada = $ancho > $alto;
        $anchito = ($apaisada) ? 200: (int) (200 / $alto * $ancho);
        $altito = ($apaisada) ? (int) (200 / $ancho * $alto): 200;
        $peque = imagecreatetruecolor($anchito, $altito);
        $paletera = imagecreatefromstring(file_get_contents($paletera));
        ob_start();
            imagegif($paletera);
        $paletita = ob_get_clean();
        $paletita = imagecreatefromstring($paletita);
        imagecopyresampled($peque, $paletita, 0, 0, 0, 0, $anchito, $altito, $ancho, $alto);
        $colores = array();
        for ($i = 0; $i < $anchito; $i++)
            for ($j = 0; $j < $altito; $j++)    {
                $c = imagecolorsforindex($paletita, imagecolorat($paletita, $i, $j));
                $cc = dec_hex($c["red"]).dec_hex($c["green"]).dec_hex($c["blue"]);
                if (!in_array($cc, $colores))    array_push($colores, $cc);
        }
        $error = 2;
    }
}
else    {
    $error = 0;
    $colores = array("000000");
}
//sort($colores);
$n = count($colores);
$mensaje_error = array("no es imagen", "tamaño inadecuado", "Ok");
$body = "Estado transacción: ".$mensaje_error[$error]."<br/>Colores encontrados: $n";
$js = "window.onload = function()\t{\n\tif (parent.mostrarPaleta)\tparent.mostrarPaleta(colores);\n\telse\talert(\"Colores: $n\\n\" + colores);\n}\ncolores = [\"".implode("\",\n\"", $colores)."\"];\n";

Este código ha sido leído en 71 ocasiones.

Zona de comentarios

Esta extra aún no tiene comentarios.

Evaluación

Valoración de esta página: (extra.paletaImagen) valor

Valoración evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar

Respuesta: Zona de mensajes (proceso de evaluación)

Listados: imágenes, categorías, etiquetas, extras | Anuarios: 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 | Otros enlaces: buscador