<?php /** * @copyright 2021 Podlibre * @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3 * @link https://castopod.org/ */ namespace App\Libraries; class Image { /** * @var \Config\Images */ protected $config; /** * @var string */ protected $original_path; /** * @var string */ public $original_url; /** * @var string */ protected $thumbnail_path; /** * @var string */ public $thumbnail_url; /** * @var string */ protected $medium_path; /** * @var string */ public $medium_url; /** * @var string */ protected $large_path; /** * @var string */ public $large_url; /** * @var string */ public $feed_path; /** * @var string */ public $feed_url; /** * @var string */ public $id3_path; public function __construct($originalUri, $mimetype) { helper('media'); $originalPath = media_path($originalUri); [ 'filename' => $filename, 'dirname' => $dirname, 'extension' => $extension, ] = pathinfo($originalPath); // load images extensions from config $this->config = config('Images'); $thumbnailExtension = $this->config->thumbnailExtension; $mediumExtension = $this->config->mediumExtension; $largeExtension = $this->config->largeExtension; $feedExtension = $this->config->feedExtension; $id3Extension = $this->config->id3Extension; $thumbnail = $dirname . '/' . $filename . $thumbnailExtension . '.' . $extension; $medium = $dirname . '/' . $filename . $mediumExtension . '.' . $extension; $large = $dirname . '/' . $filename . $largeExtension . '.' . $extension; $feed = $dirname . '/' . $filename . $feedExtension . '.' . $extension; $id3 = $dirname . '/' . $filename . $id3Extension . '.' . $extension; $this->original_path = $originalPath; $this->original_url = media_url($originalUri); $this->thumbnail_path = $thumbnail; $this->thumbnail_url = base_url($thumbnail); $this->medium_path = $medium; $this->medium_url = base_url($medium); $this->large_path = $large; $this->large_url = base_url($large); $this->feed_path = $feed; $this->feed_url = base_url($feed); $this->id3_path = $id3; $this->mimetype = $mimetype; } public function saveSizes() { $thumbnailSize = $this->config->thumbnailSize; $mediumSize = $this->config->mediumSize; $largeSize = $this->config->largeSize; $feedSize = $this->config->feedSize; $id3Size = $this->config->id3Size; $imageService = \Config\Services::image(); $imageService ->withFile($this->original_path) ->resize($thumbnailSize, $thumbnailSize) ->save($this->thumbnail_path); $imageService ->withFile($this->original_path) ->resize($mediumSize, $mediumSize) ->save($this->medium_path); $imageService ->withFile($this->original_path) ->resize($largeSize, $largeSize) ->save($this->large_path); $imageService ->withFile($this->original_path) ->resize($feedSize, $feedSize) ->save($this->feed_path); $imageService ->withFile($this->original_path) ->resize($id3Size, $id3Size) ->save($this->id3_path); } }