5

I want to get image url of product showing ,on product description page in phtml file. any help ?

3 Answers 3

23

Try this

$product = $block->getProduct();

$imageUrl = $this->helper('Magento\Catalog\Helper\Image')
                    ->init($product, 'product_base_image')
                    ->constrainOnly(true)
                    ->keepAspectRatio(true)
                    ->keepTransparency(true)
                    ->keepFrame(false)
                    ->resize(150, 150)->getUrl();
1
  • thank you working fine. can I ask a small thing ? I want to show that image on a button click on pdp page aswell. I which I file code this ?
    – Learner
    Commented Jan 18, 2018 at 9:27
4
use Magento\Catalog\Helper\Image;

/**
         * Catalog Image Helper
         *
         * @var Image
         */
        protected $imageHelper;
public function __construct(
        Image $imageHelper
    ) {
        $this->imageHelper = $imageHelper;
    }

private function getAllSizeImages(ModelProduct $product, $imageFile)
    {
        return [
            'large' => $this->imageHelper->init($product, 'product_page_image_large_no_frame')
                ->setImageFile($imageFile)
                ->getUrl(),
            'medium' => $this->imageHelper->init($product, 'product_page_image_medium_no_frame')
                ->setImageFile($imageFile)
                ->getUrl(),
            'small' => $this->imageHelper->init($product, 'product_page_image_small')
                ->setImageFile($imageFile)
                ->getUrl(),
        ];
    }
2
4

This worked for me

// Step 1:  In your custom or block class add a variable  $_image
protected $_image;

//  Step 2: Injecting a class ( Magento\Catalog\Helper\Image ) into constructor
public function __construct(
    Magento\Catalog\Helper\Image $_image
) {
    $this->_image = $_image;
}

//  Step 3: Create a custom function
public function getProductImageUrl($product)
{
    return $this->_image->init($product, 'product_base_image')->constrainOnly(FALSE)
        ->keepAspectRatio(TRUE)
        ->keepFrame(FALSE)
        ->getUrl();
} 

and at last in your respective custom phtml call the getProductImageUrl method in that pass respective $poduct object.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.