diff options
| author | root <root@vichan.6irc.us> | 2013-08-03 21:49:38 -0400 |
|---|---|---|
| committer | root <root@vichan.6irc.us> | 2013-08-03 21:49:38 -0400 |
| commit | 1f5ce14f591522096da7011c1d5f18abb09f03fe (patch) | |
| tree | ec700cb54aa24190fdeffce4e19483c74dc173ff /inc/image.php | |
| parent | d79da75fa9f664d13cc99dc984b53c7b2a06fd5c (diff) | |
| parent | b373b39f44d87a8c1085433c5e848addcf1a8d72 (diff) | |
Merge branch 'master' of https://github.com/savetheinternet/Tinyboard
Diffstat (limited to 'inc/image.php')
| -rw-r--r-- | inc/image.php | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/inc/image.php b/inc/image.php index 92e74277..97ef8454 100644 --- a/inc/image.php +++ b/inc/image.php @@ -87,7 +87,7 @@ class Image { } $thumb->_resize($this->image->image, $width, $height); - + return $thumb; } @@ -248,15 +248,25 @@ class ImageConvert extends ImageBase { $this->temp = false; } + public function get_size($src, $try_gd_first = true) { + if ($try_gd_first) { + if ($size = @getimagesize($src)) + return $size; + } + $size = shell_exec_error(($this->gm ? 'gm ' : '') . 'identify -format "%w %h" ' . escapeshellarg($src . '[0]')); + if (preg_match('/^(\d+) (\d+)$/', $size, $m)) + return array($m[1], $m[2]); + return 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]; - $this->height = $m[2]; + $size = $this->get_size($this->src, false); + if ($size) { + $this->width = $size[1]; + $this->height = $size[2]; $this->image = true; } else { @@ -272,13 +282,13 @@ class ImageConvert extends ImageBase { if($error = shell_exec_error(($this->gm ? 'gm ' : '') . 'convert ' . escapeshellarg($this->src) . ' -auto-orient -strip ' . escapeshellarg($src))) { $this->destroy(); - error('Failed to resize image!', null, $error); + error('Failed to redraw image!', null, $error); } } else { if($error = shell_exec_error(($this->gm ? 'gm ' : '') . 'convert ' . escapeshellarg($this->src) . ' -auto-orient ' . escapeshellarg($src))) { $this->destroy(); - error('Failed to resize image!', null, $error); + error('Failed to redraw image!', null, $error); } } } else { @@ -324,6 +334,10 @@ class ImageConvert extends ImageBase { $this->height, escapeshellarg($this->temp))) || !file_exists($this->temp)) error('Failed to resize image!', null, $error); + if ($size = $this->get_size($this->temp)) { + $this->width = $size[0]; + $this->height = $size[1]; + } } } else { if ($error = shell_exec_error(($this->gm ? 'gm ' : '') . 'convert ' . @@ -335,6 +349,10 @@ class ImageConvert extends ImageBase { $this->height, escapeshellarg($this->temp))) || !file_exists($this->temp)) error('Failed to resize image!', null, $error); + if ($size = $this->get_size($this->temp)) { + $this->width = $size[0]; + $this->height = $size[1]; + } } } } |
