imageBuilder = $imageBuilder; $this->_filesystem = $filesystem; $this->_imageFactory = $imageFactory; $this->_storeManager = $storeManager; } /** * Retrieve product image * * @param \Magento\Catalog\Model\Product $product * @param string $imageId * @param array $attributes * @return \Magento\Catalog\Block\Product\Image */ public function resizeImage($product, $imageWidth = '', $imageHeight = '', $attributes = [], $imageId ='category_page_grid') { return $this->imageBuilder->setProduct($product) ->setImageWidth($imageWidth) ->setImageHeight($imageHeight) ->setResizeImageWidth($imageWidth) ->setResizeImageHeight($imageHeight) ->setImageId($imageId) ->setAttributes($attributes) ->create(); } /** * @param string $src * @param integer $width * @param integer $height * @param integer $quality * @param string $dir * @param string $newName * @param boolean $deleteIfExist * @return string */ public function resize($src, $width = 150, $height = 0, $quality = 80, $dir = 'magezon/resized', $newName = '', $deleteIfExist = false) { $dir = $dir . '/' . $width; $absPath = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->getAbsolutePath($src); if ($newName) { $imageResized = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->getAbsolutePath($dir . '/' . $newName); } else { $imageResized = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->getAbsolutePath($dir . '/' . $src); } $imageResize = $this->_imageFactory->create(); $resizedURL = ''; if (file_exists($absPath)) { $imageResize->open($absPath); $imageResize->backgroundColor([255, 255, 255]); $imageResize->constrainOnly(TRUE); $imageResize->keepTransparency(TRUE); $imageResize->keepFrame(true); $imageResize->keepAspectRatio(true); $imageResize->quality($quality); if ($height) { $imageResize->resize($width, $height); } else { $imageResize->resize($width); } if (!file_exists($imageResized) || $deleteIfExist) { $imageResize->save($imageResized); } if ($newName) { $resizedURL = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA). $dir . '/' . $newName; } else { $resizedURL = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA). $dir . '/' . $src; } } return $resizedURL; } }