Magento: Get resized catalog thumbnail image
My solution for generating a resized thumbnail image is to overwrite the model class of catalog. Here my xml file:
<?xml version="1.0"?>
<config>
<global>
<models>
<catalog>
<rewrite>
<category>YOURMODULE_SUBMODULE_Model_Catalog_Category</category>
</rewrite>
</catalog>
</models>
</global>
</config>
The class (/app/code/local/YOURMODULE/SUBMODULE/Model/Catalog/Category.php):
class YOURMODULE_SUBMODULE_Model_Catalog_Category extends Mage_Catalog_Model_Category
{
public function getResizedThumbnail($width = 130, $height = 130) {
if (! $this->getThumbnail()) return false;
$imageUrl = Mage::getBaseDir ( 'media' ) .DS . "catalog" . DS . "category" . DS . $this->getThumbnail();
if (! is_file ( $imageUrl )) return false;
$imageResized = Mage::getBaseDir ( 'media' ) .DS . "catalog" . DS . "category" . DS . "cache" . DS . "cat_resized" . DS . $this->getThumbnail();
if (! file_exists ( $imageResized ) && file_exists ( $imageUrl ) || file_exists($imageUrl) && filemtime($imageUrl) > filemtime($imageResized)) :
$imageObj = new Varien_Image($imageUrl);
$imageObj->constrainOnly ( true );
$imageObj->keepAspectRatio ( true );
$imageObj->keepFrame( false );
$imageObj->quality( $quality );
$imageObj->resize( $width, $height );
$imageObj->save( $imageResized );
endif;
if(file_exists($imageResized)){
return Mage::getBaseUrl( 'media' ) . "catalog" . DS . "category" . DS . "cache" . DS . "cat_resized" . DS . $this->getThumbnail();
}else{
return $this->getThumbnail();
}
}
}
Now you can call the the method $category->getResizedThumbnail() in your view.phtml
Thanks for this great little Extension!
great, thanks.
better enhance function with this
$imageObj -> keepTransparency(true);
to improve output
http://turnkeye.com/blog/images-resize-in-magento/