summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Foster <savetheinternet@tinyboard.org>2013-08-03 20:50:37 -0400
committerMichael Foster <savetheinternet@tinyboard.org>2013-08-03 20:50:37 -0400
commitb67fc7d54e3fbde2f9e117a961998c5f8440679a (patch)
treefc0a1d46c81cdfe7a4091938c8b8f656505bf60f
parent5300ffadf1c7faf3f505a585f2223fb6448b86bf (diff)
Only use `identify` if we have to
-rw-r--r--inc/image.php15
-rw-r--r--post.php2
2 files changed, 13 insertions, 4 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];
diff --git a/post.php b/post.php
index 905110d4..434bc7e2 100644
--- a/post.php
+++ b/post.php
@@ -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']);