find image size before loading image into memory

This commit is contained in:
Savetheinternet 2011-08-24 18:22:07 +10:00
parent 087e41c48a
commit 881ea10162

View File

@ -431,6 +431,40 @@
}
require_once 'inc/image.php';
if($config['imagick']) {
// This is tricky, because Imagick won't let us find
// an image's dimensions without loading it all into
// memory first, unlike GD which provides the
// getimagesize() to do exactly that. This section
// is why GD is required, even when using Imagick
// instead. There doesn't seem to be an alternative.
// Necessary for security, as Imagick even ignores
// PHP's memory limit.
// first try GD's getimagesize()
if($size = @getimagesize($post['file'])) {
if($size[0] > $config['max_width'] || $size[1] > $config['max_height']) {
file_unlink($post['file']);
error($config['error']['maxsize']);
}
} else {
// GD failed
// TODO?
}
} else {
// find dimensions of an image using GD
if(!$size = @getimagesize($post['file'])) {
file_unlink($post['file']);
error($config['error']['invalidimg']);
}
if($size[0] > $config['max_width'] || $size[1] > $config['max_height']) {
file_unlink($post['file']);
error($config['error']['maxsize']);
}
}
// create image object
$image = new Image($post['file'], $post['extension']);