2013-01-08 48 views
1

產品圖片的高度內Magento的media.phtml文件可以得到圖像高度與第一產品形象:獲取內的Magento

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

然而,這並不爲更多的產品圖片的工作(在foreach內環):

<?php if (count($this->getGalleryImages()) > 1): ?> 
<?php foreach ($this->getGalleryImages() as $_image): ?> 

同樣沒有..

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

任何人有答案嗎?

回答

3

目錄圖像幫手缺乏對這類操作的支持。您將不得不初始化您的圖像模型並從中獲取大小。所以:

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

感謝您的幫助@Jernej,我結束了使用PHP和getimagesize函數(見我的回答如下)。我不確定是否有任何理由不使用任何一個。 – Lex

0

到耶爾內伊的回答另一種方法是:

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

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

echo $width; 
+0

但這會返回一個網址,如http://www.example.com/是不是?並且當你使用getimagesize的時候,它會向你的網站發出不必要的http請求,這會顯着減緩這個過程。 –

+0

getimagesize返回一個包含7個元素的數組:http://php.net/manual/en/function.getimagesize.php。其中一條評論說'getimagesize會在檢查請求的信息之前下載整個圖像。這對於遠程訪問的大型圖像來說非常緩慢。「 – Lex

+0

我建議在執行getimagesize之前,從你的$ imagelink str_replace域部分獲取服務器的路徑,這樣php會在本地讀取圖像,並且可以節省加載時間。它會產生很大的不同,特別是如果您在一頁中的多個圖像上使用它。 –