Foros del Web » Programando para Internet » PHP »

Crear Imagen en PNG

Estas en el tema de Crear Imagen en PNG en el foro de PHP en Foros del Web. Hola, tengo el siguiente código Código PHP: $imagen = 'imagen.png' ; $original  =  imagecreatefrompng ( $imagen ); imagealphablending ( $original ,  true ); imagesavealpha ( ...
  #1 (permalink)  
Antiguo 15/01/2012, 00:34
 
Fecha de Ingreso: marzo-2009
Mensajes: 133
Antigüedad: 15 años, 1 mes
Puntos: 4
Crear Imagen en PNG

Hola, tengo el siguiente código

Código PHP:
$imagen='imagen.png';
$original imagecreatefrompng($imagen);
imagealphablending($originaltrue);
imagesavealpha($originaltrue);
imagecolorallocatealpha ($original255 255255 95 );
$thumb imagecreatetruecolor($ventanaAncho,$ventanaAlto); 
imagecopyresampled($thumb,$original,$Ax ,$Ay ,$ventanaAncho,$ventanaAlto,$ventanaAncho,$ventanaAlto); 
$laimagen=imagepng($thumb,$nombreimg.'.png'); 
Con ello creo una imagen en formato PNG, el problema es que la parte que debe de ser transparente aparece en color negro.
¿Como hago para que ese fondo negro sea transparante?

Lo uso para recortar imagenes, eso esta dado por las variables de $ventana, Ax Y Ay indican la posición de la ventana con respecto a la imagen original, pero incluso si la ventana es mas grande que la ventana, ambién aparece el fondo de color negro.

Gracias.
  #2 (permalink)  
Antiguo 15/01/2012, 00:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Crear Imagen en PNG

Hola:

Me parece que te falta crear el fondo transparente de la miniatura:


$thumb = imagecreatetruecolor($ventanaAncho,$ventanaAlto);
$fondo = imagecolorallocate($thumb, 255, 255, 255);
imagefill($thumb, 0, 0, $fondo);
imagecolortransparent($thumb, $fondo);
// y el resto...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 15/01/2012, 00:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 133
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Crear Imagen en PNG

Ya lo resolvi

Código PHP:
$imagen='mi imagen.png';
$Ax=200;
,
$Ay=150;
$ventanaAncho=800;
$ventanaAlto=300;


$im imagecreatefrompng($imagen);    
//conservar transparencia
imagealphablending($imtrue);
imagesavealpha($imtrue);
$thumb imagecreate($ventanaAncho,$ventanaAlto); 
imagecopyresampled($thumb,$im,$Ax ,$Ay ,$ventanaAncho,$ventanaAlto,$ventanaAncho,$ventanaAlto); 
imagepng($thumb,$nombreimg.'.png'); 
  #4 (permalink)  
Antiguo 15/01/2012, 00:50
 
Fecha de Ingreso: marzo-2009
Mensajes: 133
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Crear Imagen en PNG

Gracias caricatos,

Cambie esta linea:
$thumb = imagecreatetruecolor($ventanaAncho,$ventanaAlto);

Por esta:
$thumb = imagecreate($ventanaAncho,$ventanaAlto);
  #5 (permalink)  
Antiguo 15/01/2012, 01:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Crear Imagen en PNG

Hola:

No estoy seguro de como funciona sin el "truecolor", pero me parece que tiene limitada la paleta de colores... y con la coletilla y transparentando el fondo, yo consigo png's con fondo transparente. Mi código (controlando la existencia y validez de la imagen pasada por url):

Código:
$url = $_GET["url"];
$soy_fichero = is_file($url);
list ($ancho, $alto, $tipo) = @getimagesize($url);

if ($ancho)	{
	$apaisada = $ancho > $alto;
	$mayor = ($apaisada) ? $ancho : $alto;
	if (isset($_GET["max"]) && ((int) $_GET["max"] <= $mayor))	{

		$img = imagecreatefromstring(file_get_contents($url));
		$ratio = ($ancho > $alto) ? $max / $ancho: $max / $alto; 
		$anchito = $ancho * $ratio;
		$altito = $alto * $ratio;
		$mini = imagecreatetruecolor($anchito, $altito);
		$fondo = imagecolorallocate($mini, 0, 0, 0);
		imagecolortransparent($mini, $fondo);
		imagefill($mini, 0, 0, $fondo);

		imagecopyresized($mini, $img, 0, 0, 0, 0, $anchito, $altito, $ancho, $alto);
		header("Content-Type: image/png");
		imagepng($mini);
		imagedestroy($mini);
	}
	else	{
		$img = imagecreatefromstring(file_get_contents($url));
		header("Content-Type: image/png");
		imagepng($img);
		imagedestroy($img);
	}
}
else	{
	$img = imagecreatefromstring(file_get_contents("dibujos/miemoticon.gif"));
	header("Content-Type: image/gif");
	imagegif($img);
	imagedestroy($img);

}
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 15/01/2012, 01:53
 
Fecha de Ingreso: marzo-2009
Mensajes: 133
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Crear Imagen en PNG

Gracias Caricatos funciono con:

$thumb = imagecreatetruecolor($ventanaAncho,$ventanaAlto);
$fondo = imagecolorallocate($thumb, 255, 255, 255);
imagefill($thumb, 0, 0, $fondo);
imagecolortransparent($thumb, $fondo);
  #7 (permalink)  
Antiguo 20/07/2012, 14:10
Avatar de FantasmaFito  
Fecha de Ingreso: junio-2007
Ubicación: Buenos Aires, Argentina
Mensajes: 118
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Crear Imagen en PNG

Hola, revivo este tema, porque a mi no me crea el png transparente. Me crea una imagen, sí, pero al abrirla dice que esta corrupta. Dejo mi código a continuación:

Código PHP:
imagealphablending($imagentrue);
imagesavealpha($imagentrue);
                        
$calidad imagecreatetruecolor($nueva_anchura$nueva_altura);
$fondo imagecolorallocate($calidad255255255);
imagefill($calidad00$fondo);
imagecolortransparent($calidad$fondo);
imagefill($calidad00$fondo);
                    
imagecopyresized($calidad$imagen0000$nueva_anchura$nueva_altura$width$height);
imagepng($calidad$arrayImgs100); 
Qué estoy haciendo mal? Alguien me puede dar una mano? Muchas gracias!
  #8 (permalink)  
Antiguo 20/07/2012, 14:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Crear Imagen en PNG

El imagealphablending e imagesavealpha se los tienes que dar a $calidad, no a $imagen.

Saludos.
  #9 (permalink)  
Antiguo 20/07/2012, 14:35
Avatar de FantasmaFito  
Fecha de Ingreso: junio-2007
Ubicación: Buenos Aires, Argentina
Mensajes: 118
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Crear Imagen en PNG

Lo probé pero no funcionó :(

Cita:
Iniciado por GatorV Ver Mensaje
El imagealphablending e imagesavealpha se los tienes que dar a $calidad, no a $imagen.

Saludos.

Etiquetas: png
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:38.