Solución al problema de recorte o redimensión de png y gif transparentes en CodeIgniter


Codeigniter logo
Si trabajas con CodeIgniter y has intentado recortar o redimensionar una imagen png o gif con transparencia, te habrás llevado una desagradable sorpresa: en la imagen resultante, la parte transparente aparece en color negro.

Busqué cómo solucionarlo y San Google me dirigió al blog Códigos Útiles, donde, haciendo honor a su nombre, me brindaron un código útil para resolver el problema.

Éste es el código en sí:

//Obtenemos la extension
$ext = end(explode(".",$this->full_dst_path));

 if($ext == "png" || $ext == "gif"){

     $trnprt_indx = imagecolortransparent($src_img);
     // If we have a specific transparent color
     if ($trnprt_indx >= 0) {
         // Get the original image's transparent color's RGB values
         $trnprt_color    = imagecolorsforindex($src_img, $trnprt_indx);
         // Allocate the same color in the new image resource
         $trnprt_indx    = imagecolorallocate($dst_img, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
         // Completely fill the background of the new image with allocated color.
         imagefill($dst_img, 0, 0, $trnprt_indx);
         // Set the background color for new image to transparent
         imagecolortransparent($dst_img, $trnprt_indx);
     }
     // Always make a transparent background color for PNGs that don't have one allocated already
     elseif ($ext == "png") {
        // Turn off transparency blending (temporarily)
        imagealphablending($dst_img, false);
        // Create a new transparent color for image
        $color = imagecolorallocatealpha($dst_img, 0, 0, 0, 127);
        // Completely fill the background of the new image with allocated color.
        imagefill($dst_img, 0, 0, $color);
        // Restore transparency blending
        imagesavealpha($dst_img, true);
     }
 }

Podéis añadirlo a la librería Image_lib. Aquí tenéis la librería Image lib modificada con el parche desde Códigos Útiles.

50 paquetes de pinceles para Photoshop


Hoy os traigo una gran colección de pinceles para Photoshop. Todos gratuitos.
Ver colección de pinceles Photoshop

Todavía no sé cómo…


A partir de ahora intenta eliminar de tu vocabulario la frase “no puedo…”. Sustitúyela por “todavía no sé cómo…”. Mejorará tu motivación, tu predisposición a solucionar problemas y tu forma de afrontar situaciones difíciles.

No te limites a tí mismo.

Previous Articles

Un torrente de optimismo


Google Font: tipografías libres para la web


Recuerda que eres mortal


Ver archivos ocultos en Snow Leopard


Nunca, nunca te rindas. Nick Vujicic


2 trucos para hacer Photoshop más rápido


Leer PDF con Firefox en Mac OS X


Memento mori

Durante los últimos 33 años, me miro al espejo todas las mañanas y me pregunto: “Si hoy fuera en último día de mi vida, ¿querría hacer lo que estoy a punto de hacer hoy?” Y cada vez que la respuesta ha sido “No” por varios días seguidos, sé que necesito cambiar algo.

Recordar que moriré pronto constituye la herramienta más importante que he encontrado para ayudarme a decidir las grandes elecciones de mi vida. Porque casi todo – todas las expectativas externas, todo el orgullo, todo el temor a la vergüenza o al fracaso – todo eso desaparece a las puertas de la muerte, quedando solamente aquello que es realmente importante.

Recordar que vamos a morir es la mejor manera que conozco para evitar la trampa de pensar que tenemos algo que perder. Ya estamos desnudos. No hay ninguna razón para no seguir a nuestro corazón.

Categorías