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:
la forma de usarlo...//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; }
Código:
alguien sabe alguna manera de solucionarlo...? Me lleva loco el tema!!$new_image = nn_miniaturas($img_origen, $img_destino, 'alto', 159);
Mil gracias..