aboutsummaryrefslogtreecommitdiffstats
path: root/include/photo/photo_driver.php
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2014-10-07 21:16:30 -0700
committerfriendica <info@friendica.com>2014-10-07 21:16:30 -0700
commitee6c53c2e54619a39e16ac2176835adea3b73778 (patch)
treeff47fc99aefab0c12acdc152da514ebe34a54fe5 /include/photo/photo_driver.php
parent2975c6dd43715326b17178d1eb1fd6ded40e1745 (diff)
downloadvolse-hubzilla-ee6c53c2e54619a39e16ac2176835adea3b73778.tar.gz
volse-hubzilla-ee6c53c2e54619a39e16ac2176835adea3b73778.tar.bz2
volse-hubzilla-ee6c53c2e54619a39e16ac2176835adea3b73778.zip
add imagick version check when guessing mimetype. It probably isn't important here, but let's make sure we have the right driver installed if we do something else with photos afterward.
Diffstat (limited to 'include/photo/photo_driver.php')
-rw-r--r--include/photo/photo_driver.php31
1 files changed, 21 insertions, 10 deletions
diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php
index 42997060b..c416c0df3 100644
--- a/include/photo/photo_driver.php
+++ b/include/photo/photo_driver.php
@@ -512,19 +512,30 @@ function guess_image_type($filename, $headers = '') {
$type = $hdrs['Content-Type'];
}
if (is_null($type)){
-// FIXME!!!!
+
$ignore_imagick = get_config('system', 'ignore_imagick');
// Guessing from extension? Isn't that... dangerous?
if(class_exists('Imagick') && !$ignore_imagick) {
- logger('using imagemagick', LOGGER_DEBUG);
- /**
- * Well, this not much better,
- * but at least it comes from the data inside the image,
- * we won't be tricked by a manipulated extension
- */
- $image = new Imagick($filename);
- $type = $image->getImageMimeType();
- } else {
+ $v = Imagick::getVersion();
+ preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m);
+ if(version_compare($m[1],'6.6.7') >= 0) {
+ /**
+ * Well, this not much better,
+ * but at least it comes from the data inside the image,
+ * we won't be tricked by a manipulated extension
+ */
+ $image = new Imagick($filename);
+ $type = $image->getImageMimeType();
+ }
+ else {
+ // earlier imagick versions have issues with scaling png's
+ // don't log this because it will just fill the logfile.
+ // leave this note here so those who are looking for why
+ // we aren't using imagick can find it
+ }
+ }
+
+ if(is_null($type)) {
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$ph = photo_factory('');
$types = $ph->supportedTypes();