123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace Magefan\Blog\Helper;
- use Magento\Framework\App\Area;
- use Magento\Framework\App\Helper\AbstractHelper;
- use Magento\Framework\App\Filesystem\DirectoryList;
- /**
- * Blog image helper
- * @SuppressWarnings(PHPMD.TooManyFields)
- */
- class Image extends AbstractHelper
- {
- /**
- * Default quality value (for JPEG images only).
- *
- * @var int
- */
- protected $_quality = 100;
- protected $_keepAspectRatio = true;
- protected $_keepFrame = true;
- protected $_keepTransparency = true;
- protected $_constrainOnly = true;
- protected $_backgroundColor = [255, 255, 255];
- protected $_baseFile;
- protected $_newFile;
- public function __construct(
- \Magento\Framework\App\Helper\Context $context,
- \Magento\Framework\Image\Factory $imageFactory,
- \Magento\Framework\Filesystem $filesystem,
- \Magento\Store\Model\StoreManagerInterface $storeManager
- ) {
- $this->_imageFactory = $imageFactory;
- $this->_mediaDirectory = $filesystem->getDirectoryWrite(DirectoryList::MEDIA);
- $this->_storeManager = $storeManager;
- parent::__construct($context);
- }
- public function init($baseFile)
- {
- $this->_newFile = '';
- $this->_baseFile = $baseFile;
- return $this;
- }
- public function resize($width, $height = null)
- {
- if ($this->_baseFile){
- $path = 'blog/cache/' . $width . 'x' . $height;
- $this->_newFile = $path. '/' . $this->_baseFile;
- if (true || !$this->fileExists($this->_newFile)) {
- $this->resizeBaseFile($width, $height);
- }
- }
- return $this;
- }
- protected function resizeBaseFile($width, $height)
- {
- if (!$this->fileExists($this->_baseFile)) {
- $this->_baseFile = null;
- return $this;
- }
- $processor = $this->_imageFactory->create(
- $this->_mediaDirectory->getAbsolutePath($this->_baseFile)
- );
- $processor->keepAspectRatio($this->_keepAspectRatio);
- $processor->keepFrame($this->_keepFrame);
- $processor->keepTransparency($this->_keepTransparency);
- $processor->constrainOnly($this->_constrainOnly);
- $processor->backgroundColor($this->_backgroundColor);
- $processor->quality($this->_quality);
- $processor->resize($width, $height);
- $newFile = $this->_mediaDirectory->getAbsolutePath($this->_newFile);
- $processor->save($newFile);
- unset($processor);
- return $this;
- }
- protected function fileExists($filename)
- {
- return $this->_mediaDirectory->isFile($filename);
- }
- public function __toString()
- {
- $url = "";
- if ($this->_baseFile){
- $url = $this->_storeManager->getStore()->getBaseUrl(
- \Magento\Framework\UrlInterface::URL_TYPE_MEDIA
- ) . $this->_newFile;
- }
- return $url;
- }
- }
|