Tengo una función en php que cambia el tamaño de una foto grande a una pequeña, pero se pierde la calidad de la imagen y se ve extraña.
Existe alguna solución para mantener la calidad de imagen al redimensionar con php?
Dejo mi página donde aparecen las imágenes:
http://www.publicalibre.cl
Dejo mi código:
Código PHP:
Ver original
if($_FILES['file']['tmp_name']){ // Creamos la cadena aletoria $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; $cad = ""; for($i=0;$i<12;$i++) { } // Fin de la creacion de la cadena aletoria $tamano = $_FILES[ 'file' ][ 'size' ]; // Leemos el tamaño del fichero $tamaño_max = "3000000"; // Tamaño maximo permitido [3MB] if( $tamano < $tamaño_max){ // Comprovamos el tamaño $destino = 'uploads/tmp' ; // Carpeta donde se guardata $tipo = $sep[1]; // Optenemos el tipo de imagen que es if($tipo == "PNG" || $tipo == "png" || $tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp" || $tipo == "GIF" || $tipo == "JPG" || $tipo == "jpg" || $tipo == "JPEG" || $tipo == "jpeg"){// Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .$cad.'.'.$tipo); // Subimos el archivo $_SESSION['Imagen'] = $cad.'.'.$tipo; }else{ // Si la extensión no es correcta echo "NOTA: Imagen con extensión no permitida."; } }else{ // Si supera el tamaño de permitido lo desimos echo "NOTA: El archivo supera el tamaño permitido."; } } function redimensionar_jpeg($img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad) { // Crear una imagen desde el original // Crear una imagen nueva // Redimensiona la imagen original copiandola en la imagen ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img)); // Guardar la nueva imagen redimensionada donde indicia $img_nueva } $origen="uploads/tmp/".$_SESSION['Imagen'].""; $destino="uploads/".$_SESSION['Imagen'].""; redimensionar_jpeg($origen, $destino_temporal, 200, 200, 200); // Guardamos la imagen // Borramos la Imagen de Origen y la de Destino Temporal /tmp if($destino_temporal){ } } }