PHP - imagenes png con transparencia evitando fondo negro

 
Vista:

imagenes png con transparencia evitando fondo negro

Publicado por Sam (184 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.

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de santi
Val: 589
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

imagenes png con transparencia evitando fondo negro

Publicado por santi (204 intervenciones) el 21/09/2018 01:03:52
Hola,

tienes una función de PHP para esto:

1
imagecolortransparent($im, $negro);

Aquí tienes la documentación -> http://php.net/manual/es/function.imagecolortransparent.php

Prueba a ver ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

imagenes png con transparencia evitando fondo negro

Publicado por Sam (184 intervenciones) el 21/09/2018 08:36:19
Gracias Santi, pero veras esta funcion que dices si te fijas ya está puesta en el codigo que he puesto y no me funciona.

Por eso pido ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 740
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

imagenes png con transparencia evitando fondo negro

Publicado por Gonzalo (615 intervenciones) el 22/09/2018 02:07:39
fijate a ver si tienes instalada la libreria php-gd.

como saber si esta instalada depende si estas usando windows o linux, asi que lo mas facil es hacer un archivo Info.Php, dentro escribes esto

1
2
3
4
5
<?php
 
phpinfo();
 
?>

y lo llamas con el explorador, busca la libreria, si no la tienes entonces ese es el problema.

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar