Recortar con PHP Imágenes Subidas con Ajax Upload


Última Actualización: 31/08/2022 19:03 Nro de Vistas: 7042

Este Tuto es el Siguiente Paso del Artículo: Cargar Varias Imágenes con JavaScript y PHP (recortando) 

Como ya tenemos la Parte del Cliente ahora Vamos a la Parte del PHP.

En el ZIP que descargaste encontrarás una Carpeta llamada Server. De aqui solo saca el archivo uploader.php y renombrala a uploader.class.php.

En este archivo haremos unas modificaciones para eliminar caracteres no validos del nombre de la Imagen.

ve hasta el final del php verás algo como esto

 


 

$truco = preg_replace('/[^a-zA-Z0-9\_]/', '', $filename); //agregué esto para limpiar caracteres no validos y espacios. solo permitirá numeros y letras a-z excluyendo la ñ.
$truco = strtolower($truco); //Convertirá el nombre en Minusculas
$ext = strtolower($ext); //Convertirá la Extensión en Minusculas
if ($this->file->save($uploadDirectory . $truco . '.' . $ext)){ //Esto ordena que guarde el archivo .
return array('success'=>true);
} else {
return array('error'=> 'No se puede Guardar el Archivo.' .
'La carga a sido cancelada, o hubo un error en el servidor');
}

} 
}

// list of valid extensions, ex. array("jpeg", "xml", "bmp")
$allowedExtensions = array("jpg","jpeg","gif","png");
// max file size in bytes
//$sizeLimit = 10 * 1024 * 1024; //Comenta esta linea
$uploader = new qqFileUploader($allowedExtensions);
if (!is_dir('temp/')){ //Agregué esto para crear una carpeta temp donde subirá los archivos
mkdir('temp', 777);//El resize.php se encargará de recortarlo y llevarlo a su destino final
}
$result = $uploader->handleUpload('temp/', true); //Esto hace que los archivos originales carguen en una carpeta temporal. La Sentencia TRUE hace que no renombre archivos si vuelves a subir la misma imagen
echo htmlspecialchars(json_encode($result), ENT_NOQUOTES); 

 

Con esto ya nuestro archivo cargará las imagenes a la Carpeta TEMP . 

Ahora para Recortar la Imagen haremos uso de la clase. thumbs.php Esta clase no necesitamos alterar nada. solo haremos un nuevo archivo.php.

Crea un nuevo documento php y pega lo siguiente.


$fn = $_GET['fn'];

$error = true;
$origen = 'temp/'.$fn;
$destino = '../../'.$_SESSION['dir_upload']; //Tengo la direccion de la carpeta a guardar en una sesion
is_file($origen) ? $or_ex = 'EXISTE' : $or_ex = 'NO EXISTE';
if(is_file($origen) and is_dir($destino)){  //Compruebo si existen los archivos y carpetas
$size = getimagesize($origen); //Obtengo datos de la imagen
$ancho = $size[0]; //Ancho de la Imagen
$alto = $size[1];  //Alto
if ($alto >= 651){ // Trabajo con el Alto ya que las fotos cambian vertical u horizontal y como la pantalla es ancho solo necesitamos determinar el alto de la foto. Si es horizontal la foto solo se estirará en pantalla.
require_once('thumb.php'); //Aqui direccionamos a nuestra clase thumb.
$image = new thumb(); //Apertura de la Clase
$image->loadImage($origen);//Carga la Imagen Origen que esta en la carpeta temp
$image->resize(650, "height"); //Recorta la imagen
$image->save($destino.$fn);//Guarda en la carpeta destino
$result = 'Cambio de tamaño Correctamente';
$error = false;
}else{ //En caso que la imagen sea mas pequeña de  650px no recorta solo lo mueve.
if (is_file($destino.$fn)){
//Si encuentra con el mismo nombre elimina el archivo
unlink($destino.$fn);
}
if (rename($origen,$destino.$fn)) { //Renombra el Archivo
$result = 'Movido Correctamente';
$error = false;
} else {
$result = 'No se pudo Mover el Archivo'; 
$error = true;
}
}
if (is_file($origen)){ //Elimina el Archivo de la carpeta Temp
unlink($origen);
}
}else{
$result = 'No existe el Origen o el Destino';
$error = true;
}
if ($error){
echo $result;
}else{
echo 'Imagen Cargado Correctamente.';
}
?> 

 

 

 

Y ya... Puedes modificarlo de acuerdo a tu necesidad pero con esto ya tienes las pautas para Subir Fotos masivamente.