Recortar con PHP Imágenes Subidas con Ajax Upload
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.