Php 获取Magento内产品图像的高度

Php 获取Magento内产品图像的高度,php,magento,Php,Magento,在Magento的media.phtml文件中,您可以通过以下方式获得第一个产品图像的图像高度: <?php $imageWidth = $this->helper('catalog/image')->init($_product, 'image')->getOriginalWidth(); ?> 但是,这不适用于进一步的产品图像(在foreach循环中): 也不是 <?php echo $this->helper('catalog/image

在Magento的media.phtml文件中,您可以通过以下方式获得第一个产品图像的图像高度:

<?php $imageWidth = $this->helper('catalog/image')->init($_product, 'image')->getOriginalWidth(); ?>

但是,这不适用于进一步的产品图像(在foreach循环中):


也不是

<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile())->getOriginalWidth(); ?>


有人知道答案吗?

Catalog image helper缺少对此类操作的支持。您必须初始化图像模型并从中获取大小。因此:

<?php foreach ($this->getGalleryImages() as $_image): ?>
  <?php $image = new Varien_Image($_image->getPath()); ?>
  <?php echo $image->getOriginalWidth(); ?>
  <?php echo $image->getOriginalHeight(); ?>
<?php endforeach; ?>

Jernej回答的另一个选择是:

$imagelink = $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile());                        

list($width, $height, $type, $attr) = getimagesize($imagelink);

echo $width; 

感谢@Jernej的帮助,我最终使用了PHP getimagesize函数(见下面的答案)。我不确定是否有任何理由不使用任何一个。但这将返回一个url,如中所示,不是吗?当您使用getimagesize时,它会向您的站点发出不必要的http请求,这会显著减慢进程getimagesize返回一个包含7个元素的数组:。其中一条评论说,“getimagesize将在检查请求的信息之前下载整个图像。这在远程访问的大型图像上非常慢。我建议在执行getimagesize之前,先从$imagelink中替换域部分,以获取服务器上的路径,这样php将在本地读取图像,并可以节省加载时间。这会有很大的不同,尤其是当你在一个页面中的几个图像上使用它时。
$imagelink = $this->helper('catalog/image')->init($this->getProduct(), 'image', $_image->getFile());                        

list($width, $height, $type, $attr) = getimagesize($imagelink);

echo $width;