Browse Source

find image size before loading image into memory

pull/40/head
Savetheinternet 13 years ago
parent
commit
881ea10162
  1. 34
      post.php

34
post.php

@ -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']);

Loading…
Cancel
Save