diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-01-17 11:46:30 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2018-01-18 13:40:55 +0100 |
commit | 3d4c698f448925aca62976175ffd4bab9694c7d6 (patch) | |
tree | 6ab0f4840ef17e67cc97426cc323b46dc31f80c0 /lib/private/Avatar.php | |
parent | c121610d5a42b8a30a328c0a2f9704fb20d4c369 (diff) | |
download | nextcloud-server-3d4c698f448925aca62976175ffd4bab9694c7d6.tar.gz nextcloud-server-3d4c698f448925aca62976175ffd4bab9694c7d6.zip |
Improve OC_Image code to not guess the type of input, but actually request the specific methods to be called
Followup to #7836
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'lib/private/Avatar.php')
-rw-r--r-- | lib/private/Avatar.php | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/private/Avatar.php b/lib/private/Avatar.php index afa9118c509..ce3fcff396e 100644 --- a/lib/private/Avatar.php +++ b/lib/private/Avatar.php @@ -117,7 +117,24 @@ class Avatar implements IAvatar { $img = $data; $data = $img->data(); } else { - $img = new OC_Image($data); + $img = new OC_Image(); + if (is_resource($data) && get_resource_type($data) === "gd") { + $img->setResource($data); + } elseif(is_resource($data)) { + $img->loadFromFileHandle($data); + } else { + try { + // detect if it is a path or maybe the images as string + $result = @realpath($data); + if ($result === false || $result === null) { + $img->loadFromData($data); + } else { + $img->loadFromFile($data); + } + } catch (\Error $e) { + $img->loadFromData($data); + } + } } $type = substr($img->mimeType(), -3); if ($type === 'peg') { |