/** * 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(); }