4

I need to get image directory means full path. I get the image path from the following code

$product = $this->productmodel->load($orderItem->getProductId());
$product->getThumbnail();

I got url

/w/b/wb02-green-0.jpg

I need

   /var/www/html/magento/pub/media/catalog/product/w/b/wb02-green-0.jpg

How do i get that i did following code

$path = $this->directorylist->getPath("media");

it returns

/var/www/html/magento/pub/media

but i need

/var/www/html/magento/pub/media/catalog/product/w/b/wb02-green-0.jpg
3

First, inject below class in your constructor

     use Magento\Catalog\Model\Product\Media\Config;
     use Magento\Framework\Filesystem;


    /** 
     * @var Config
     */
    private $mediaConfig;

    /**
     * @var Filesystem
     */
    private $filesystem;


    /**
     * @param Config $mediaConfig
     * @param Filesystem $filesystem
     */
    public function __construct(
        Config $mediaConfig,
        Filesystem $filesystem
    )
    {
        $this->mediaConfig = $mediaConfig;
        $this->filesystem = $filesystem;
    }

Now you can use this like,

        $directory = $this->filesystem->getDirectoryRead('media');
        $fullImagePath = $directory->getAbsolutePath($this->mediaConfig->getMediaPath($product->getThumbnail()));

Where $product is your product object.

  • Thank you for your answer . it saves my time . i need one more clarification if $product->getThumbnail() returns null. Then how do i get the default image – Sammu Sundar Dec 20 '18 at 5:48
4

A quick solution according to your tests:

$fullPath = $this->directorylist->getPath("media").'/catalog/product'.$product->getThumbnail();

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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