diff options
| author | Michael Foster <savetheinternet@tinyboard.org> | 2013-08-03 20:50:37 -0400 |
|---|---|---|
| committer | Michael Foster <savetheinternet@tinyboard.org> | 2013-08-03 20:50:37 -0400 |
| commit | b67fc7d54e3fbde2f9e117a961998c5f8440679a (patch) | |
| tree | fc0a1d46c81cdfe7a4091938c8b8f656505bf60f /inc | |
| parent | 5300ffadf1c7faf3f505a585f2223fb6448b86bf (diff) | |
Only use `identify` if we have to
Diffstat (limited to 'inc')
| -rw-r--r-- | inc/image.php | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/inc/image.php b/inc/image.php index 1dac4724..92e74277 100644 --- a/inc/image.php +++ b/inc/image.php @@ -11,7 +11,7 @@ if (realpath($_SERVER['SCRIPT_FILENAME']) == str_replace('\\', '/', __FILE__)) { class Image { public $src, $format, $image, $size; - public function __construct($src, $format = false) { + public function __construct($src, $format = false, $size = false) { global $config; $this->src = $src; @@ -28,7 +28,7 @@ class Image { } } - $this->image = new $classname($this); + $this->image = new $classname($this, $size); if (!$this->image->valid()) { $this->delete(); @@ -122,10 +122,15 @@ class ImageBase extends ImageGD { return (bool)$this->image; } - public function __construct($img) { + public function __construct($img, $size = false) { if (method_exists($this, 'init')) $this->init(); + if ($size && $size[0] > 0 && $size[1] > 0) { + $this->width = $size[0]; + $this->height = $size[1]; + } + if ($img !== false) { $this->src = $img->src; $this->from(); @@ -244,6 +249,10 @@ class ImageConvert extends ImageBase { $this->temp = false; } public function from() { + if ($this->width > 0 && $this->height > 0) { + $this->image = true; + return; + } $size = shell_exec_error(($this->gm ? 'gm ' : '') . 'identify -format "%w %h" ' . escapeshellarg($this->src . '[0]')); if (preg_match('/^(\d+) (\d+)$/', $size, $m)) { $this->width = $m[1]; |
