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 {
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];

View File

@ -464,7 +464,7 @@ if (isset($_POST['delete'])) {
}
// 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']) {
$image->delete();
error($config['error']['maxsize']);