/** * Save an Picture object to the file system. * Runs OptimizeFileJob on the file after it is saved. * * @param Picture $picture * @param string $directory One of the *_DIR constants. * @param string $filename * @param ImageFile|null $originalImageFile * * @throws Exception * @return ImageFile */ public function savePicture(Picture $picture, $directory = self::IMAGE_DIR, $filename = null, ImageFile $originalImageFile = null) { if (!$filename) { $mime = $picture->mime(); if (empty($mime)) { $mime = 'image/jpeg'; } $extension = $this->getExtensionForMime($mime); $filename = $this->generateFilename($extension); } $relativePath = $directory . '/' . $filename; // Save locally if (!$this->savePictureLocally($picture, $relativePath)) { throw new Exception('Unable to save file locally.'); } $imageFile = new ImageFile(['originalImageFileId' => $originalImageFile ? $originalImageFile->getId() : null, 'directory' => $directory, 'filename' => $filename, 'width' => $picture->getWidth(), 'height' => $picture->getHeight(), 'size' => $picture->filesize()]); $imageFile->save(); // Optimize and copy to remote storage $this->dispatch(new OptimizeFileJob($imageFile)); return $imageFile; }
/** * @param ImageFile|null $imageFile */ public function setThumbnailImageFile(ImageFile $imageFile = null) { if ($imageFile) { $this->thumbnailImageFileId = $imageFile->getId(); } else { $this->thumbnailImageFileId = null; } }
/** * @param ImageFile|null $imageFile */ public function setUncroppedImageFile(ImageFile $imageFile = null) { if ($imageFile) { $this->uncroppedImageFileId = $imageFile->getId(); } else { $this->uncroppedImageFileId = null; } }