You can get width height of image using Varien_Image (lib/Varien/Image.php) class object.
In this example, I assume that your image is present inside media directory of your magento installation.
$imagePath = YOUR_IMAGE_PATH_LINK; // like http://example.com/media/myfolder/myimage.jpg
// changing url link of image into directory link
$dirImg = Mage::getBaseDir().str_replace("/",DS,strstr($imagePath,'/media'));
// getting image width and height
if (file_exists($dirImg)) {
$imageObj = new Varien_Image($dirImg);
$width = $imageObj->getOriginalWidth();
$height = $imageObj->getOriginalHeight();
echo $width." x ".$height;
}
else {
echo "File doesn't exist.";
}
Resize Image
<?php echo $this->helper('catalog/image')->init($_product, 'image') |
Fixed height of 600px
<?php echo $this->helper('catalog/image')->init($_product, 'image') |
The following code will resize image proportionally and not let the image be greater than height and width specified.
<?php echo $this->helper('catalog/image')->init($_product, 'image') |
Description of the functions used above:-
constrainOnly(bool $flag)
Guarantee, that image picture will not be bigger, than it was. Applicable before calling resize() It is false by default
keepAspectRatio(bool $flag)
Guarantee, that image picture width/height will not be distorted. Applicable before calling resize() It is true by default.
keepFrame(bool $flag)
Guarantee, that image will have dimensions, set in $width/$height.
Applicable before calling resize() Not applicable, if
keepAspectRatio(false).
You can resize image with Varien_Image class as well. This is most
suitable when you are resizing image that is not related with catalog
product.
$imageUrl = Mage::getBaseDir('media').DS."myimage".DS.$post->getThumbnail(); |
$imageResized = Mage::getBaseDir('media').DS."myimage".DS."resized".DS.$post->getThumbnail(); |
if (!file_exists($imageResized)&&file_exists($_imageUrl)) : |
$imageObj = new Varien_Image($_imageUrl); |
$imageObj->constrainOnly(TRUE); |
$imageObj->keepAspectRatio(TRUE); |
$imageObj->keepFrame(FALSE); |
$imageObj->resize(135, 135); |
$imageObj->save($imageResized); |
You can use the resized image now as:
<img src="<?php echo Mage::getBaseUrl('media')."myimage/resized/".$post->getThumbnail() ?>" /> |
Another Scenario
Suppose, you have an image link. Now, you want to resize it. The
image might be from any place. In this example, I am supposing the image
link to be like
http://localhost/magento/media/catalog/category/test_image.jpg
Now, I have to resize it. To do so, I will create a directory called
resized inside media/catalog/category. And, I will save the resized file into the newly created
resized directory.
if(!file_exists("./media/catalog/category/resized")) mkdir("./media/catalog/category/resized",0777); |
$imageName = substr(strrchr($imageUrl,"/"),1); |
$imageResized = Mage::getBaseDir('media').DS."catalog".DS."category".DS."resized".DS.$imageName; |
$dirImg = Mage::getBaseDir().str_replace("/",DS,strstr($imageUrl,'/media')); |
if (!file_exists($imageResized)&&file_exists($dirImg)) : |
$imageObj = new Varien_Image($dirImg); |
$imageObj->constrainOnly(TRUE); |
$imageObj->keepAspectRatio(TRUE); |
$imageObj->keepFrame(FALSE); |
$imageObj->resize(120, 120); |
$imageObj->save($imageResized); |
$newImageUrl = Mage::getBaseUrl('media')."catalog/category/resized/".$imageName; |
Displaying newly created resized image.
<img src="<?php echo Mage::getBaseUrl('media')."catalog/category/resized/".$newImageUrl ?>" /> |
You can check other function for Varien_Image at
http://docs.magentocommerce.com/Varien/elementindex_Varien_Image.html
http://blog.chapagain.com.np/
Comments
Post a Comment