blob: 2ab455f96e544724d9d65b5133d8033794519aee [file] [log] [blame]
<?php
/**
* Create thumbnails.
* @author $Author:ray $
* @version $Id:Thumbnail.php 709 2007-01-30 23:22:04Z ray $
* @package ImageManager
*/
require_once('../ImageManager/Classes/Transform.php');
/**
* Thumbnail creation
* @author $Author:ray $
* @version $Id:Thumbnail.php 709 2007-01-30 23:22:04Z ray $
* @package ImageManager
* @subpackage Images
*/
class Thumbnail
{
/**
* Graphics driver, GD, NetPBM or ImageMagick.
*/
var $driver;
/**
* Thumbnail default width.
*/
var $width = 96;
/**
* Thumbnail default height.
*/
var $height = 96;
/**
* Thumbnail default JPEG quality.
*/
var $quality = 85;
/**
* Thumbnail is proportional
*/
var $proportional = true;
/**
* Default image type is JPEG.
*/
var $type = 'jpeg';
/**
* Create a new Thumbnail instance.
* @param int $width thumbnail width
* @param int $height thumbnail height
*/
function Thumbnail($width=96, $height=96)
{
$this->driver = Image_Transform::factory(IMAGE_CLASS);
$this->width = $width;
$this->height = $height;
}
/**
* Create a thumbnail.
* @param string $file the image for the thumbnail
* @param string $thumbnail if not null, the thumbnail will be saved
* as this parameter value.
* @return boolean true if thumbnail is created, false otherwise
*/
function createThumbnail($file, $thumbnail=null)
{
if(!is_file($file))
Return false;
//error_log('Creating Thumbs: '.$file);
$this->driver->load($file);
if($this->proportional)
{
$width = $this->driver->img_x;
$height = $this->driver->img_y;
if ($width > $height)
$this->height = intval($this->width/$width*$height);
else if ($height > $width)
$this->width = intval($this->height/$height*$width);
}
$this->driver->resize($this->width, $this->height);
if(is_null($thumbnail))
$this->save($file);
else
$this->save($thumbnail);
$this->free();
if(is_file($thumbnail))
Return true;
else
Return false;
}
/**
* Save the thumbnail file.
* @param string $file file name to be saved as.
*/
function save($file)
{
$this->driver->save($file);
}
/**
* Free up the graphic driver resources.
*/
function free()
{
$this->driver->free();
}
}
?>