Skip to content

Commit 2fe4876

Browse files
authored
Merge pull request #35117 from nextcloud/backport/35105/stable25
[stable25] Fix distorted previews when using imaginary
2 parents 316dad1 + 8424e50 commit 2fe4876

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

lib/private/Preview/Imaginary.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
use OCP\Http\Client\IClientService;
2828
use OCP\IConfig;
2929
use OCP\IImage;
30+
use OCP\Image;
3031

3132
use OC\StreamImage;
3233
use Psr\Log\LoggerInterface;
@@ -126,12 +127,21 @@ public function getCroppedThumbnail(File $file, int $maxX, int $maxY, bool $crop
126127
return null;
127128
}
128129

129-
if ($response->getHeader('X-Image-Width') && $response->getHeader('X-Image-Height')) {
130-
$maxX = (int)$response->getHeader('X-Image-Width');
131-
$maxY = (int)$response->getHeader('X-Image-Height');
130+
// This is not optimal but previews are distorted if the wrong width and height values are
131+
// used. Both dimension headers are only sent when passing the option "-return-size" to
132+
// Imaginary.
133+
if ($response->getHeader('Image-Width') && $response->getHeader('Image-Height')) {
134+
$image = new StreamImage(
135+
$response->getBody(),
136+
$response->getHeader('Content-Type'),
137+
(int)$response->getHeader('Image-Width'),
138+
(int)$response->getHeader('Image-Height'),
139+
);
140+
} else {
141+
$image = new Image();
142+
$image->loadFromFileHandle($response->getBody());
132143
}
133144

134-
$image = new StreamImage($response->getBody(), $response->getHeader('Content-Type'), $maxX, $maxY);
135145
return $image->valid() ? $image : null;
136146
}
137147

0 commit comments

Comments
 (0)