I want to resize only one catalog product images. Is it possible in magento2?
I already know the command for resizing catalog image:
php bin/magento catalog:images:resize
but i want to do this for only one product images
I want to resize only one catalog product images. Is it possible in magento2?
I already know the command for resizing catalog image:
php bin/magento catalog:images:resize
but i want to do this for only one product images
Magento does not have any command line. So you have to build the command yourself.
Take look on Magento\MediaStorage\Service\ImageResize::resizeFromThemes
Try This in Block File :-
protected $_filesystem ;
protected $_imageFactory;
public function __construct(
\Magento\Framework\Filesystem $filesystem,
\Magento\Framework\Image\AdapterFactory $imageFactory
){
$this->_filesystem = $filesystem;
$this->_imageFactory = $imageFactory;
}
public function resize($image, $width = null, $height = null)
{
$absolutePath = $this->_filesystem->getDirectoryRead(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA)->getAbsolutePath('custom_module/posts/').$image;
if (!file_exists($absolutePath)) return false;
$imageResized = $this->_filesystem->getDirectoryRead(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA)->getAbsolutePath('resized/'.$width.'/').$image;
if (!file_exists($imageResized)) {
$imageResize = $this->_imageFactory->create();
$imageResize->open($absolutePath);
$imageResize->constrainOnly(TRUE);
$imageResize->keepTransparency(TRUE);
$imageResize->keepFrame(FALSE);
$imageResize->keepAspectRatio(TRUE);
$imageResize->resize($width,$height);
//destination folder
$destination = $imageResized ;
//save image
$imageResize->save($destination);
}
$resizedURL = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA).'resized/'.$width.'/'.$image;
return $resizedURL;
}