Viewing file: Driver.php (2.23 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Intervention\Image\Gd;
use Intervention\Image\Exception\NotSupportedException; use Intervention\Image\Image;
class Driver extends \Intervention\Image\AbstractDriver { /** * Creates new instance of driver * * @param Decoder $decoder * @param Encoder $encoder */ public function __construct(Decoder $decoder = null, Encoder $encoder = null) { if ( ! $this->coreAvailable()) { throw new NotSupportedException( "GD Library extension not available with this PHP installation." ); }
$this->decoder = $decoder ? $decoder : new Decoder; $this->encoder = $encoder ? $encoder : new Encoder; }
/** * Creates new image instance * * @param int $width * @param int $height * @param mixed $background * @return \Intervention\Image\Image */ public function newImage($width, $height, $background = null) { // create empty resource $core = imagecreatetruecolor($width, $height); $image = new Image(new static, $core);
// set background color $background = new Color($background); imagefill($image->getCore(), 0, 0, $background->getInt());
return $image; }
/** * Reads given string into color object * * @param string $value * @return AbstractColor */ public function parseColor($value) { return new Color($value); }
/** * Checks if core module installation is available * * @return boolean */ protected function coreAvailable() { return (extension_loaded('gd') && function_exists('gd_info')); }
/** * Returns clone of given core * * @return mixed */ public function cloneCore($core) { $width = imagesx($core); $height = imagesy($core); $clone = imagecreatetruecolor($width, $height); imagealphablending($clone, false); imagesavealpha($clone, true); $transparency = imagecolorallocatealpha($clone, 0, 0, 0, 127); imagefill($clone, 0, 0, $transparency); imagecopy($clone, $core, 0, 0, 0, 0, $width, $height);
return $clone; } }
|