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