Only use identify if we have to

This commit is contained in:
Michael Foster 2013-08-03 20:50:37 -04:00
parent 5300ffadf1
commit b67fc7d54e
2 changed files with 13 additions and 4 deletions

View File

@ -11,7 +11,7 @@ if (realpath($_SERVER['SCRIPT_FILENAME']) == str_replace('\\', '/', __FILE__)) {
class Image { class Image {
public $src, $format, $image, $size; public $src, $format, $image, $size;
public function __construct($src, $format = false) { public function __construct($src, $format = false, $size = false) {
global $config; global $config;
$this->src = $src; $this->src = $src;
@ -28,7 +28,7 @@ class Image {
} }
} }
$this->image = new $classname($this); $this->image = new $classname($this, $size);
if (!$this->image->valid()) { if (!$this->image->valid()) {
$this->delete(); $this->delete();
@ -122,10 +122,15 @@ class ImageBase extends ImageGD {
return (bool)$this->image; return (bool)$this->image;
} }
public function __construct($img) { public function __construct($img, $size = false) {
if (method_exists($this, 'init')) if (method_exists($this, 'init'))
$this->init(); $this->init();
if ($size && $size[0] > 0 && $size[1] > 0) {
$this->width = $size[0];
$this->height = $size[1];
}
if ($img !== false) { if ($img !== false) {
$this->src = $img->src; $this->src = $img->src;
$this->from(); $this->from();
@ -244,6 +249,10 @@ class ImageConvert extends ImageBase {
$this->temp = false; $this->temp = false;
} }
public function from() { 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]')); $size = shell_exec_error(($this->gm ? 'gm ' : '') . 'identify -format "%w %h" ' . escapeshellarg($this->src . '[0]'));
if (preg_match('/^(\d+) (\d+)$/', $size, $m)) { if (preg_match('/^(\d+) (\d+)$/', $size, $m)) {
$this->width = $m[1]; $this->width = $m[1];

View File

@ -464,7 +464,7 @@ if (isset($_POST['delete'])) {
} }
// create image object // create image object
$image = new Image($upload, $post['extension']); $image = new Image($upload, $post['extension'], $size);
if ($image->size->width > $config['max_width'] || $image->size->height > $config['max_height']) { if ($image->size->width > $config['max_width'] || $image->size->height > $config['max_height']) {
$image->delete(); $image->delete();
error($config['error']['maxsize']); error($config['error']['maxsize']);