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

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
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.


