Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/09/2018, 12:47
mensajeescrito
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 5 meses
Puntos: 5
imagenes png con transparencia evitando fondo negro

Hola amigas/os a ver si me pueden ayudar con esto.

Tengo un metodo que me funciona bien a la hora de redimensionar y guardar una imagen.

Pero las imagens png con fondo transparente me las pone con fondo negro.

Y claro esto no puede ser.

Lo he intentado usando "imagecolorallocate" y "imagecolortransparent" pero no me funciona.

Y tengo la lebreria GD.

Y estoy trabajando en local.

Pongo aqui mi metodo a ver si me pueden ayudar para que me salgan las imagenes con su transparencia de fondo .

Gracias de antemano.

Código PHP:
Ver original
  1. //---Método de extraer una sección de la imagen sin deformarla
  2.             function crop($cwidth, $cheight, $pos = 'center')
  3.  
  4.                 {
  5.                     //---Dependiendo del tamaño deseado redimensionar primero la imagen a uno de los valores
  6.                     if($cwidth > $cheight)
  7.  
  8.                         {
  9.                             $this->resize($cwidth, 'width');
  10.                         }
  11.  
  12.                         else
  13.  
  14.                         {
  15.                             $this->resize($cheight, 'height');
  16.                         }
  17.  
  18.  
  19.  
  20.                         //---Crear la imagen tomando la porción del centro de la imagen redimensionada con las dimensiones deseadas
  21.                         $image = imagecreatetruecolor($cwidth, $cheight);
  22.  
  23.  
  24.  
  25.                         //Fondo blanco
  26.                         $blanco = imagecolorallocate($image, 255, 255, 255);
  27.  
  28.  
  29.                         // Hacer el fondo transparente
  30.                         imagecolortransparent($image, $blanco);
  31.  
  32.  
  33.  
  34.                     switch($pos)
  35.  
  36.                         {
  37.                             case 'center':
  38.                             imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
  39.                             break;
  40.  
  41.                             case 'left':
  42.                             imagecopyresampled($image, $this->image, 0, 0, 0, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
  43.                             break;
  44.  
  45.                             case 'right':
  46.                             imagecopyresampled($image, $this->image, 0, 0, $this->width - $cwidth, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
  47.                             break;
  48.  
  49.                             case 'top':
  50.                             imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), 0, $cwidth, $cheight, $cwidth, $cheight);
  51.                             break;
  52.  
  53.                             case 'bottom':
  54.                             imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), $this->height - $cheight, $cwidth, $cheight, $cwidth, $cheight);
  55.                             break;
  56.                         }
  57.  
  58.                     $this->image = $image;
  59.                 }