Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/07/2007, 05:25
Avatar de markshock
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"
_________________________________