Foros del Web » Programando para Internet » PHP »

Resize de imagenes PNG y GIF transparente...

Estas en el tema de Resize de imagenes PNG y GIF transparente... en el foro de PHP en Foros del Web. HOla amigos, estoy haciendo un uplaod de imagenes, pero tengo un problema con los thumbnails que creo... si la imagen es transparente (PNG o GIF) ...
  #1 (permalink)  
Antiguo 27/07/2007, 05:25
Avatar de markshock  
Fecha de Ingreso: abril-2004
Ubicación: Allí, al fondo a la izqui
Mensajes: 316
Antigüedad: 20 años
Puntos: 0
Resize de imagenes PNG y GIF transparente...

HOla amigos,

estoy haciendo un uplaod de imagenes, pero tengo un problema con los thumbnails que creo...

si la imagen es transparente (PNG o GIF) cuando crea el thumbnail, sale el fondo negro...

el código es el siguiente...

Código:
//miniaturas
function nn_miniaturas ($ruta_original, $ruta_destino, $lado, $px, $cuadrada='no') {
	//$original = @imagecreatefromjpeg($ruta_original); //creo una copia de la imagen original
	$extension = split("[/.]", $ruta_original);
	// crear imagen desde original
  $extension = strtolower(end($extension));
  switch($extension){
    case 'jpeg':	$original = @imageCreateFromJPEG($ruta_original); break;
    case 'jpg':		$original = @imageCreateFromJPEG($ruta_original); break;
    case 'png':		$original = @imageCreateFromPNG($ruta_original); break;
    case 'gif':		$original = @imageCreateFromGIF($ruta_original); break;
  } 
	
	$alto_actual = @imagesy($original); //calculo el alto
	$ancho_actual = @imagesx($original); //calculo el ancho
	//segun se especifique ancho o alto, se calcula el otro lado.
	if ($lado == 'ancho') {
		$resultado = $alto_actual / $ancho_actual;
		$alto = $px * $resultado;
		$ancho = $px;
	} elseif ($lado == 'alto') {
		$resultado = $ancho_actual / $alto_actual;
		$ancho = $px * $resultado;
		$alto = $px;
	} else {
		echo "Debes especificar si la medida que has introducido es el alto o el ancho de la imagen. <br />";
	}
	//para encajar bien la imagen vuelve a calcular los lados de la nueva.
	if ($cuadrada == 'cuadrada' and $lado == 'alto') {
		$imagen = @imagecreatetruecolor($px,$px);
		$resultado = $alto / $ancho;
		$ancho = $resultado * $ancho;
		$imagen = @imagecreatetruecolor($px, $ancho);
	} elseif ($cuadrada == 'cuadrada' and $lado == 'ancho') {
		$resultado = $ancho / $alto;
		$alto = $resultado * $alto;
		$imagen = @imagecreatetruecolor($px, $alto);
	} else {
		$imagen = @imagecreatetruecolor($ancho,$alto);
	}
	
	@imagecopyresampled ($imagen,$original,0,0,0,0,$ancho,$alto,$ancho_actual,$alto_actual);
	echo($extension);
	switch($extension){
    case 'jpeg':	@imagejpeg($imagen, $ruta_destino,95); break;
    case 'jpg':		@imagejpeg($imagen, $ruta_destino,95); break;
    case 'png':		@imagepng($imagen, $ruta_destino,95); break;
    case 'gif':		@imagegif($imagen, $ruta_destino,95); break;
  } 

	return $ruta_destino;
}
la forma de usarlo...

Código:
$new_image = nn_miniaturas($img_origen, $img_destino, 'alto', 159);
alguien sabe alguna manera de solucionarlo...? Me lleva loco el tema!!

Mil gracias..
__________________
Señoooraaaa!! Que camisetas!!!

"Hay 10 tipos de personas, las que piensan en binario y las que no"
_________________________________
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 02:02.