1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-13 17:34:04 +02:00

Adds ImageManagerBasic

This commit is contained in:
Sági-Kazár Márk
2014-07-31 19:23:57 +02:00
committed by Oliver Vogel
parent dd5a47ba16
commit d3321a7c6f
3 changed files with 117 additions and 9 deletions

View File

@@ -0,0 +1,108 @@
<?php
namespace Intervention\Image;
use Closure;
class ImageManagerBasic
{
/**
* Config
*
* @var array
*/
protected $config;
/**
* Default config
*
* @var array
*/
protected $defaultConfig = array(
'driver' => 'gd',
);
/**
* Creates new instance of Image Manager
*
* @param array $config
*/
public function __construct(array $config = array())
{
$this->config = $this->defaultConfig + $config;
}
/**
* Creates a driver instance according to config settings
*
* @return Intervention\Image\AbstractDriver
*/
private function createDriver()
{
$drivername = ucfirst($this->config['driver']);
$driverclass = sprintf('Intervention\\Image\\%s\\Driver', $drivername);
if (class_exists($driverclass)) {
return new $driverclass;
}
throw new \Intervention\Image\Exception\NotSupportedException(
"Driver ({$drivername}) could not be instantiated."
);
}
/**
* Initiates an Image instance from different input types
*
* @param mixed $data
*
* @return Intervention\Image\Image
*/
public function make($data)
{
return $this->createDriver()->init($data);
}
/**
* Creates an empty image canvas
*
* @param integer $width
* @param integer $height
* @param mixed $background
*
* @return Intervention\Image\Image
*/
public function canvas($width, $height, $background = null)
{
return $this->createDriver()->newImage($width, $height, $background);
}
/**
* Create new cached image and run callback
* (requires additional package intervention/imagecache)
*
* @param Closure $callback
* @param integer $lifetime
* @param boolean $returnObj
*
* @return Image
*/
public function cache(Closure $callback, $lifetime = null, $returnObj = false)
{
if (class_exists('Intervention\\Image\\ImageCache')) {
// create imagecache
$imagecache = new ImageCache($this);
// run callback
if (is_callable($callback)) {
$callback($imagecache);
}
return $imagecache->get($lifetime, $returnObj);
}
throw new \Intervention\Image\Exception\NotSupportedException(
"Please install package intervention/imagecache before running this function."
);
}
}

View File

@@ -7,20 +7,20 @@ use Closure;
class ImageManagerStatic
{
/**
* Instance of Intervention\Image\ImageManager
* Instance of Intervention\Image\ImageManagerBasic
*
* @var ImageManager
* @var ImageManagerBasic
*/
public $manager;
/**
* Creates a new instance
*
* @param ImageManager $manager
* @param ImageManagerBasic $manager
*/
public function __construct(ImageManager $manager = null)
public function __construct(ImageManagerBasic $manager = null)
{
$this->manager = $manager ? $manager : new ImageManager;
$this->manager = $manager ? $manager : new ImageManagerBasic;
}
/**

View File

@@ -11,7 +11,7 @@ class ImageManagerStaticTest extends PHPUnit_Framework_TestCase
public function testNewInstance()
{
$manager = Mockery::mock('Intervention\Image\ImageManager');
$manager = Mockery::mock('Intervention\Image\ImageManagerBasic');
$managerStatic = new ImageManagerStatic($manager);
$m = $managerStatic->newInstance();
$this->assertInstanceOf('Intervention\Image\ImageManagerStatic', $m);
@@ -19,7 +19,7 @@ class ImageManagerStaticTest extends PHPUnit_Framework_TestCase
public function testMake()
{
$manager = Mockery::mock('Intervention\Image\ImageManager');
$manager = Mockery::mock('Intervention\Image\ImageManagerBasic');
$managerStatic = new ImageManagerStatic($manager);
$img = $managerStatic->make('tests/images/tile.png');
$this->assertInstanceOf('Intervention\Image\Image', $img);
@@ -27,7 +27,7 @@ class ImageManagerStaticTest extends PHPUnit_Framework_TestCase
public function testCanvas()
{
$manager = Mockery::mock('Intervention\Image\ImageManager');
$manager = Mockery::mock('Intervention\Image\ImageManagerBasic');
$managerStatic = new ImageManagerStatic($manager);
$img = $managerStatic->canvas(100, 100);
$this->assertInstanceOf('Intervention\Image\Image', $img);