PHP: clase para recortar imágenes

Hoy me he encontrado con una clase PHP para recortar imágenes.

He aquí el código para la clase (solo le he añadido un pequeño detalle para poder elegir el tamaño de la imagen resultante):

class cropImage {
 var $imgSrc,$myImage,$cropHeight,$cropWidth,$x,$y,$thumb;

 function setImage($image) {

  //Your Image
  $this->imgSrc = $image;

  //getting the image dimensions
  list($width, $height) = getimagesize($this->imgSrc);

  //create image from the jpeg
  $this->myImage = imagecreatefromjpeg($this->imgSrc) or die("Error: Cannot find image!");
  if($width > $height) $biggestSide = $width; //find biggest length
  else $biggestSide = $height;

  //The crop size will be half that of the largest side
  $cropPercent = .5; // This will zoom in to 50% zoom (crop)
  $this->cropWidth   = $biggestSide*$cropPercent;
  $this->cropHeight  = $biggestSide*$cropPercent;

  //getting the top left coordinate
  $this->x = ($width-$this->cropWidth)/2;
  $this->y = ($height-$this->cropHeight)/2;
}

 function createThumb($size) {
  $thumbSize = $size; // will create a 250 x 250 thumb
  $this->thumb = imagecreatetruecolor($thumbSize, $thumbSize);
  imagecopyresampled($this->thumb, $this->myImage, 0, 0,$this->x, $this->y, $thumbSize, $thumbSize, $this->cropWidth, $this->cropHeight);
 }

 function renderImage() {
  header('Content-type: image/jpeg');
  imagejpeg($this->thumb);
  imagedestroy($this->thumb);
 }

}

Y se utiliza con el siguiente código:

$image = new cropImage;
$image->setImage($img);
$image->createThumb($size);
$image->renderImage();

La variable $img es la url de la imagen original, y la variable $size es el tamaño de imagen (sale con forma de cuadrado), tanto de anchura como de altura (ha de ser un número entero).

4 respuestas a «PHP: clase para recortar imágenes»

  1. Podemos tambien especificar un "recorte minimo" para perder lo menos posible de la imagen original al ajustarla a nuestras medidas (y evitar bordes negros) con la linea
    if($width>$height) { $cropPercent = 1/($width/$height);} else { $cropPercent = 1/($height/$width);}

    saludos

Los comentarios están cerrados.