如何在 magento 2.0 中获取原始大小的图像 url

How to get original size image url in magento 2.0

我是 Magento 2.0 的新手,我一直在努力寻找解决方案。我的第一个问题,我还没有弄清楚,如何达到特定的功能?因为我注意到很多人在 Magento 1.+ 中使用它们:

Mage::helper('cms/page')->

Mage::getModel('catalog/product_media_config')  

(例如 Get original image url Magento (1.6.1.0)

但我无法在 Magento 2.0 中使用它们。如果这种用法在上一个版本中不再可用,我可以使用什么作为替代方法来实现功能?

至于另一个问题,我无法在 grid.phtml(目录列表)中获得原始尺寸的图像。以下是获取图片的方法:

<?php 
echo $block->getImage($_item, $image)->getImageUrl(); 
echo $block->getImage($_item, $image)->getWidth(); 
echo $block->getImage($_item, $image)->getHeight();
?>

结果是这样的:

http://192.168.1.4/magento/pub/media/catalog/product/cache/1/small_image/240x300/beff4985b56e3afdbeabfc89641a4582/t/h/thumbnail_1.jpg240300

正如我上面提到的,我想要获得原始大小的图像 url 而不是 small_image。我希望我解释了我的问题。如果有人有任何想法,请告诉我。谢谢!

1) 直接写媒体目录路径快速解决

echo $block->getUrl().'pub/media/catalog/product' . $_product->getImage();

2) 使用 StoreManager class 对象获取媒体目录路径

namespace YourNamespace\YourModule\Block;
class YourModule extends \Magento\Framework\View\Element\Template
{
    protected $_storeManager;

    public function __construct(
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        ...        
    )
    {
        $this->_storeManager = $storeManager;
        ...
    }

    public function getMediaBaseUrl()
    {
        return $this->_storeManager
                    ->getStore()
                    ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
    }
}

然后在你模块的模板(.phtml)文件中,你可以这样写:

echo $block->getMediaBaseUrl() . $_product->getImage();

使用以下函数获取特定商店的媒体库 url:

function getMediaBaseUrl() {

$om = \Magento\Framework\App\ObjectManager::getInstance();

$storeManager = $om->get('Magento\Store\Model\StoreManagerInterface');

$currentStore = $storeManager->getStore();
return $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
}

使用 getMediaBaseUrl() 函数我们可以在 Magento2 中找到图像 url:

echo $block->getMediaBaseUrl() .'catalog/product'. $_product->getImage();