Tengo este script guardado, no se si te servira, a mi me va bien cuando levanto imagenes y necesito redimensionar a 1024px y el thumb a 70px, por ejemplo, y no estar levantando imagenes que miden 3000px
Código PHP:
//REDIMENSIONAR IMAGEN PEQUEÑA
function redimensionar_jpeg($img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad)
{
$img = imagecreatefromJPEG($img_original);
$thumb = imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura);
imagecopyresampled($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,imagesx($img),imagesy($img));
imageJPEG($thumb,$img_nueva,$img_nueva_calidad);
imageDestroy($img);
}
//REDIMENSIONAR IMAGEN MAS GRANDE
function redimension($ruta_imagen, $img_nueva, $ancho_final, $calidad){
//Cargo en memoria la imagen que quiero redimensionar
$img = imagecreatefromJPEG($ruta_imagen);
//Obtengo el ancho de la imagen quecargue
$ancho_original = ImageSX($img);
//Obtengo el alto de la imagen que cargue
$alto_original = ImageSY($img);
//SI QUEREMOS UN ANCHO FINAL FIJO, calculamos el ALTO de forma proporcionada
//$ancho_final = 500;
//Ancho final en pixeles
$alto_final = ($ancho_final / $ancho_original) * $alto_original;
//SI CONOCEMOS UN ALTO FINAL FIJO, calculamos el ANCHO de forma proporcionada
//Para usar este caso, comentar las dos lineas anteriores, y descomentar las dos siguientes a este comentario
/*$alto_final = 250; //Alto final en pixeles
$ancho_final = ($alto_final / $alto_original) * $ancho_original;*/
//Creo una imagen vacia, con el alto y el ancho que tendrá la imagen redimensionada
$imagen_redimensionada = imagecreatetruecolor($ancho_final, $alto_final);
//Copio la imagen original con las nuevas dimensiones a la imagen en blanco que creamos en la linea anterior
imagecopyresampled($imagen_redimensionada, $img, 0, 0, 0, 0, $ancho_final, $alto_final, $ancho_original, $alto_original);
//Guardo la imagen ya redimensionada
imageJPEG($imagen_redimensionada, $img_nueva, $calidad);
//Libero recursos, destruyendo las imágenes que estaban en memoria
imageDestroy($img);
imageDestroy($imagen_redimensionada);
}
Su uso:
Código PHP:
//Preguntamos si nuetro arreglo 'archivos' fue definido
if (isset($_FILES["archivos"])) {
//de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
//obtenemos la cantidad de elementos que tiene el arreglo archivos
$tot = count($_FILES["archivos"]["name"]);
//este for recorre el arreglo
for ($i = 0; $i < $tot; $i++){
if(is_uploaded_file($_FILES["archivos"]["tmp_name"][$i])){
//con el indice $i, podremos obtener la propiedad que desemos de cada archivo
//para trabajar con este como si fuera un array continuo
$tmp_name = $_FILES["archivos"]["tmp_name"][$i];
$name = $_FILES["archivos"]["name"][$i];
$tamano = $_FILES["archivos"]["size"][$i];
$tipo = $_FILES["archivos"]["type"][$i];
if (!((strpos($tipo, "gif") || strpos($tipo, "png")|| strpos($tipo, "jpeg")) && ($tamano < 5000000))) {
echo '<div style="width:500px; height:80px; padding:10px; background-color:#FF0000;">';
echo '<p style="font-size:15px; color:#FFF;"><strong>ERROR DE FORMATO O TAMANHO</strong></p></div>';
}else{
/* Crear carpeta temporal para redimension posterior */
$temporal="../../galerias/temporal/";
if (!file_exists($temporal)){
@mkdir ($temporal, 0777)
or die("No se ha podido crear el directorio ".$temporal);
}
/* Guardar el archivo */
$destino="../../galerias/".$folder['folder']."/";
$dir_thumb = "thumbs/";
if(!file_exists($destino.$dir_thumb)){
@mkdir ($destino.$dir_thumb, 0777)
or die("No se ha podido crear el directorio ".$destino.$dir_thumb);
}
$destTHU= $destino.$dir_thumb;
if(move_uploaded_file($_FILES["archivos"]["tmp_name"][$i],$temporal.$name)){
redimension($temporal.$name, $destino.$name, 500, 80);
redimensionar_jpeg($destino.$name, $destTHU.$name, 70, 47, 80);
//inserto los textos en la base de datos
$sql = "INSERT INTO imagenes (idFolder, idGal, big, small)
VALUES ('".$folder['idFolder']."', '".$gal['idGal']."', '".$name."', '".$name."')";
borrarDirectorio($temporal);
}//if move_uploaded_file
}//else
}//if is_uploaded_file
//cierro mi consulta $sql
mysql_query($sql,$conn) or die(mysql_error($conn));
}//for
echo "<p style='color:#093'>Se han agregado las fotografís correctamente</p>";
echo "<a href='../listados/mostrar-galeria.php?tabla=".$gal['nameGal']."'>Editar editar las descripciones de las fotos</a>";
}