コード例 #1
0
 /**
  * Realiza o crop da imagem para determinadas medidas
  * @param ImageType $imageType Informações do tipo de imagem
  */
 private function crop($imageType)
 {
     // Caminho da imagem a ser realizado crop
     $croppedImagePath = sprintf("%s/%s_%s", $this->getDirImagePath(), $imageType->getName(), $this->getName());
     // Dimensões da imagem que foi realizada resize
     $resizedImageSizes = $this->getResizedImageSizes();
     // Pontos x e y para crop
     $startHeight = ($resizedImageSizes['height'] - $imageType->getHeight()) / 2;
     $startWidth = ($resizedImageSizes['width'] - $imageType->getWidth()) / 2;
     // Cria a nova imagem
     $newImage = imagecreatetruecolor($imageType->getWidth(), $imageType->getHeight());
     $source = $this->getSource($this->getResizedImagePath());
     imagecopy($newImage, $source, 0, 0, $startWidth, $startHeight, $resizedImageSizes['width'], $resizedImageSizes['height']);
     $this->createImage($newImage, $croppedImagePath, $this->getResizedImagePath());
     chmod($croppedImagePath, 0777);
     // Apaga a imagem de resize
     unlink($this->getResizedImagePath());
     // Grava no banco de dados as informações do novo tamanho de imagem
     $imageSize = new ImageSize();
     $imageSize->setImage($this->getImage());
     $imageSize->setImageType($imageType);
     $imageSize->setFileName($croppedImagePath);
     $imageSize->setFileContentType($this->getMimeType($croppedImagePath));
     $imageSize->setFileSize(filesize($croppedImagePath));
     $imageSize->save();
 }