imagenes png con transparencia evitando fondo negro
Publicado por Sam (185 intervenciones) el 20/09/2018 21:02:41
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.
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//---Método de extraer una sección de la imagen sin deformarla
function crop($cwidth, $cheight, $pos = 'center')
{
//---Dependiendo del tamaño deseado redimensionar primero la imagen a uno de los valores
if($cwidth > $cheight)
{
$this->resize($cwidth, 'width');
}
else
{
$this->resize($cheight, 'height');
}
//---Crear la imagen tomando la porción del centro de la imagen redimensionada con las dimensiones deseadas
$image = imagecreatetruecolor($cwidth, $cheight);
//Fondo blanco
$blanco = imagecolorallocate($image, 255, 255, 255);
// Hacer el fondo transparente
imagecolortransparent($image, $blanco);
switch($pos)
{
case 'center':
imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
break;
case 'left':
imagecopyresampled($image, $this->image, 0, 0, 0, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
break;
case 'right':
imagecopyresampled($image, $this->image, 0, 0, $this->width - $cwidth, abs(($this->height - $cheight) / 2), $cwidth, $cheight, $cwidth, $cheight);
break;
case 'top':
imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), 0, $cwidth, $cheight, $cwidth, $cheight);
break;
case 'bottom':
imagecopyresampled($image, $this->image, 0, 0, abs(($this->width - $cwidth) / 2), $this->height - $cheight, $cwidth, $cheight, $cwidth, $cheight);
break;
}
$this->image = $image;
}
Valora esta pregunta


0