Viewing file: img_crop_to_file_stock.php (4.83 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php $pagina_actual="administrar-fotos-noticias"; $categoria_actual="noticias"; require_once("includes/config.php"); require_once("includes/funciones.php");
//$id=cadena_segura($_GET["id"],11); /* * !!! THIS IS JUST AN EXAMPLE !!!, PLEASE USE ImageMagick or some other quality image processing libraries */ $imgUrl = $_POST['imgUrl']; // original sizes $imgInitW = $_POST['imgInitW']; $imgInitH = $_POST['imgInitH']; // resized sizes $imgW = $_POST['imgW']; $imgH = $_POST['imgH']; // offsets $imgY1 = $_POST['imgY1']; $imgX1 = $_POST['imgX1']; // crop box $cropW = $_POST['cropW']; $cropH = $_POST['cropH']; // rotation angle $angle = $_POST['rotation'];
$jpeg_quality = 80;
$output_filename = "temp/croppedImg_".rand();
// uncomment line below to save the cropped image in the same location as the original image. //$output_filename = dirname($imgUrl). "/croppedImg_".rand();
$what = getimagesize($imgUrl);
switch(strtolower($what['mime'])) { case 'image/png': $img_r = imagecreatefrompng($imgUrl); $source_image = imagecreatefrompng($imgUrl); $type = '.png'; break; case 'image/jpeg': $img_r = imagecreatefromjpeg($imgUrl); $source_image = imagecreatefromjpeg($imgUrl); error_log("jpg"); $type = '.jpeg'; break; case 'image/gif': $img_r = imagecreatefromgif($imgUrl); $source_image = imagecreatefromgif($imgUrl); $type = '.gif'; break; default: die('image type not supported'); }
//Check write Access to Directory
if(!is_writable(dirname($output_filename))){ $response = Array( "status" => 'error', "message" => 'Can`t write cropped File' ); }else{ /* // resize the original image to size of editor $resizedImage = imagecreatetruecolor($imgW, $imgH); imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, $imgW, $imgH, $imgInitW, $imgInitH); // rotate the rezized image $rotated_image = imagerotate($resizedImage, -$angle, 0); // find new width & height of rotated image $rotated_width = imagesx($rotated_image); $rotated_height = imagesy($rotated_image); // diff between rotated & original sizes $dx = $rotated_width - $imgW; $dy = $rotated_height - $imgH; // crop rotated image to fit into original rezized rectangle $cropped_rotated_image = imagecreatetruecolor($imgW, $imgH); imagecolortransparent($cropped_rotated_image, imagecolorallocate($cropped_rotated_image, 0, 0, 0)); imagecopyresampled($cropped_rotated_image, $rotated_image, 0, 0, $dx / 2, $dy / 2, $imgW, $imgH, $imgW, $imgH); // crop image into selected area $final_image = imagecreatetruecolor($cropW, $cropH); imagecolortransparent($final_image, imagecolorallocate($final_image, 0, 0, 0)); imagecopyresampled($final_image, $cropped_rotated_image, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH); // finally output png image //imagepng($final_image, $output_filename.$type, $png_quality); imagejpeg($final_image, $output_filename.$type, $jpeg_quality); */ //extra cds $timestamp=time(); //thumb $resizedImage = imagecreatetruecolor($imgW, $imgH); imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, $imgW, $imgH, $imgInitW, $imgInitH); $final_image = imagecreatetruecolor($cropW, $cropH); imagecopyresampled($final_image, $resizedImage, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH); imageinterlace($final_image, true);//progresiva imagejpeg($final_image, $carpeta_stock_thumb.$timestamp.$type, $jpeg_quality);//genero el thumb //original $resizedImage = imagecreatetruecolor($imgW*$ancho_noticias_original/$cropW, $imgH*$alto_noticias_original/$cropH); imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, $imgW*$ancho_noticias_original/$cropW, $imgH*$alto_noticias_original/$cropH, $imgInitW, $imgInitH); //hasta aca tengo la imagen achicada un poco sin crop $final_image = imagecreatetruecolor($ancho_noticias_original, $alto_noticias_original); imagecopyresampled($final_image, $resizedImage, 0, 0, $imgX1*$ancho_noticias_original/$cropW, $imgY1*$alto_noticias_original/$cropH, $ancho_noticias_original, $alto_noticias_original, $ancho_noticias_original, $alto_noticias_original); imageinterlace($final_image, true);//progresiva imagejpeg($final_image, $carpeta_stock_original.$timestamp.$type, $jpeg_quality); //copy($imgUrl,$carpeta_paquetes_original.$timestamp.$type);//copio la original //generar_imagen($imgUrl,$ancho_noticias_original,$alto_noticias_original,$carpeta_noticias_original.$timestamp.$type);//genero la grande //generar_imagen($imgUrl,$ancho_paquetes_thumb,$alto_paquetes_thumb,$carpeta_paquetes_thumb.$timestamp.$type);//genero la grande $nombre_archivo=$timestamp.$type;
$result=$mysqli->query(" INSERT INTO foto_stock (nombre) VALUES ( '".$nombre_archivo."' )"); //hasta aca $response = Array( "status" => 'success', "url" => $output_filename.$type ); } print json_encode($response);
|