una subir redimensionar recortar imagenes imagen con aplicaciĆ³n php image upload resize crop

subir - redimensionar imagen php 2018



Cargar, redimensionar y recortar el centro de la imagen con PHP (4)

La Biblioteca de GD es un buen lugar para comenzar.

http://www.php.net/manual/en/book.image.php

Quiero crear una secuencia de comandos PHP de carga, cambio de tamaño y recorte muy básica. La funcionalidad para esto será idéntica (la última que comprobé de todos modos) al método que Twitter usa para cargar imágenes de avatar.

Quiero que la secuencia de comandos tome cualquier tamaño de imagen, cambie el tamaño del lado más corto a 116px, luego recorte la parte superior e inferior (o el lado izquierdo y derecho si es horizontal) para obtener un cuadrado de 116px por 116px.

No quiero una secuencia de comandos PHP inflada con el cambio de tamaño del lado del cliente ni nada, simplemente un tamaño de PHP simple y recorte. ¿Cómo se hace esto?


Si quieres un ejemplo para trabajar desde mi carga, cambiar el tamaño y cortar la clase hace todo esto más algunas cosas interesantes: puedes usarlo todo si es necesario o simplemente tomar los bits que te gusten:

http://www.mjdigital.co.uk/blog/php-upload-and-resize-image-class/

¡No creo que esté demasiado hinchado! - Puedes hacer algo así (no probado):

if((isset($_FILES[''file''][''error'']))&&($_FILES[''file''][''error'']==0)){ // if a file has been posted then upload it include(''INCLUDE_CLASS_FILE_HERE.php''); $myImage = new _image; // upload image $myImage->uploadTo = ''uploads/''; // SET UPLOAD FOLDER HERE $myImage->returnType = ''array''; // RETURN ARRAY OF IMAGE DETAILS $img = $myImage->upload($_FILES[''file'']); if($img) { $myImage->newWidth = 116; $myImage->newHeight = 116; $i = $myImage->resize(); // resizes to 116px keeping aspect ratio // get new image height $imgWidth = $i[''width'']; // get new image width $imgHeight = $i[''height'']; if($i) { // work out where to crop it $cropX = ($imgWidth>116) ? (($imgWidth-116)/2) : 0; $cropY = ($imgHeight>116) ? (($imgHeight-116)/2) : 0; $cropped = $myImage->crop(116,116,$cropX,$cropY); if($cropped) { echo ''It Worked (I think!)''; print_r($cropped); } else { echo ''Crop failed''; } } else { echo ''Resize failed''; } } else { echo ''Upload failed''; }


Hay una biblioteca de código abierto fácil de usar llamada PHP Image Magician . Utiliza GD pero simplifica su uso a 3 líneas.

Ejemplo de uso básico:

$magicianObj = new imageLib(''racecar.jpg''); $magicianObj -> resizeImage(100, 200, ''crop''); $magicianObj -> saveImage(''racecar_small.png'');


Hice esta sencilla función, que es muy fácil de usar, le permite cambiar el tamaño, recortar y centrar una imagen a un ancho y alto específicos, puede suponer JPG, PNG y GIF. Siéntase libre de copiar y pegarlo en su código:

function resize_imagejpg($file, $w, $h, $finaldst) { list($width, $height) = getimagesize($file); $src = imagecreatefromjpeg($file); $ir = $width/$height; $fir = $w/$h; if($ir >= $fir){ $newheight = $h; $newwidth = $w * ($width / $height); } else { $newheight = $w / ($width/$height); $newwidth = $w; } $xcor = 0 - ($newwidth - $w) / 2; $ycor = 0 - ($newheight - $h) / 2; $dst = imagecreatetruecolor($w, $h); imagecopyresampled($dst, $src, $xcor, $ycor, 0, 0, $newwidth, $newheight, $width, $height); imagejpeg($dst, $finaldst); imagedestroy($dst); return $file; } function resize_imagegif($file, $w, $h, $finaldst) { list($width, $height) = getimagesize($file); $src = imagecreatefromgif($file); $ir = $width/$height; $fir = $w/$h; if($ir >= $fir){ $newheight = $h; $newwidth = $w * ($width / $height); } else { $newheight = $w / ($width/$height); $newwidth = $w; } $xcor = 0 - ($newwidth - $w) / 2; $ycor = 0 - ($newheight - $h) / 2; $dst = imagecreatetruecolor($w, $h); $background = imagecolorallocatealpha($dst, 0, 0, 0, 127); imagecolortransparent($dst, $background); imagealphablending($dst, false); imagesavealpha($dst, true); imagecopyresampled($dst, $src, $xcor, $ycor, 0, 0, $newwidth, $newheight, $width, $height); imagegif($dst, $finaldst); imagedestroy($dst); return $file; } function resize_imagepng($file, $w, $h, $finaldst) { list($width, $height) = getimagesize($file); $src = imagecreatefrompng($file); $ir = $width/$height; $fir = $w/$h; if($ir >= $fir){ $newheight = $h; $newwidth = $w * ($width / $height); } else { $newheight = $w / ($width/$height); $newwidth = $w; } $xcor = 0 - ($newwidth - $w) / 2; $ycor = 0 - ($newheight - $h) / 2; $dst = imagecreatetruecolor($w, $h); $background = imagecolorallocate($dst, 0, 0, 0); imagecolortransparent($dst, $background); imagealphablending($dst, false); imagesavealpha($dst, true); imagecopyresampled($dst, $src, $xcor, $ycor, 0, 0, $newwidth, $newheight,$width, $height); imagepng($dst, $finaldst); imagedestroy($dst); return $file; } function ImageResize($file, $w, $h, $finaldst) { $getsize = getimagesize($file); $image_type = $getsize[2]; if( $image_type == IMAGETYPE_JPEG) { resize_imagejpg($file, $w, $h, $finaldst); } elseif( $image_type == IMAGETYPE_GIF ) { resize_imagegif($file, $w, $h, $finaldst); } elseif( $image_type == IMAGETYPE_PNG ) { resize_imagepng($file, $w, $h, $finaldst); } }

Todo lo que tienes que hacer para usarlo es llamarlo así:

ImageResize(image, width, height, destination);

P.ej

ImageResize("uploads/face.png", 100, 150, "images/user332profilepic.png");