mirror of
https://github.com/nextcloud/server.git
synced 2026-02-27 03:50:37 -05:00
Merge pull request #37156 from nextcloud/backport/37140/stable25
[stable25] imaginary - fix autorotate for heic and improve the logic
This commit is contained in:
commit
8b088b3e33
1 changed files with 32 additions and 33 deletions
|
|
@ -82,8 +82,14 @@ class Imaginary extends ProviderV2 {
|
|||
$httpClient = $this->service->newClient();
|
||||
|
||||
$convert = false;
|
||||
$autorotate = true;
|
||||
|
||||
switch ($file->getMimeType()) {
|
||||
case 'image/heic':
|
||||
// Autorotate seems to be broken for Heic so disable for that
|
||||
$autorotate = false;
|
||||
$mimeType = 'jpeg';
|
||||
break;
|
||||
case 'image/gif':
|
||||
case 'image/png':
|
||||
$mimeType = 'png';
|
||||
|
|
@ -92,50 +98,43 @@ class Imaginary extends ProviderV2 {
|
|||
case 'application/pdf':
|
||||
case 'application/illustrator':
|
||||
$convert = true;
|
||||
// Converted files do not need to be autorotated
|
||||
$autorotate = false;
|
||||
$mimeType = 'png';
|
||||
break;
|
||||
default:
|
||||
$mimeType = 'jpeg';
|
||||
}
|
||||
|
||||
$operations = [];
|
||||
|
||||
if ($convert) {
|
||||
$operations = [
|
||||
[
|
||||
'operation' => 'convert',
|
||||
'params' => [
|
||||
'type' => 'png',
|
||||
]
|
||||
],
|
||||
[
|
||||
'operation' => ($crop ? 'smartcrop' : 'fit'),
|
||||
'params' => [
|
||||
'width' => $maxX,
|
||||
'height' => $maxY,
|
||||
'type' => 'png',
|
||||
'norotation' => 'true',
|
||||
]
|
||||
$operations[] = [
|
||||
'operation' => 'convert',
|
||||
'params' => [
|
||||
'type' => $mimeType,
|
||||
]
|
||||
];
|
||||
} else {
|
||||
$quality = $this->config->getAppValue('preview', 'jpeg_quality', '80');
|
||||
|
||||
$operations = [
|
||||
[
|
||||
'operation' => 'autorotate',
|
||||
],
|
||||
[
|
||||
'operation' => ($crop ? 'smartcrop' : 'fit'),
|
||||
'params' => [
|
||||
'width' => $maxX,
|
||||
'height' => $maxY,
|
||||
'stripmeta' => 'true',
|
||||
'type' => $mimeType,
|
||||
'norotation' => 'true',
|
||||
'quality' => $quality,
|
||||
]
|
||||
]
|
||||
} elseif ($autorotate) {
|
||||
$operations[] = [
|
||||
'operation' => 'autorotate',
|
||||
];
|
||||
}
|
||||
|
||||
$quality = $this->config->getAppValue('preview', 'jpeg_quality', '80');
|
||||
|
||||
$operations[] = [
|
||||
'operation' => ($crop ? 'smartcrop' : 'fit'),
|
||||
'params' => [
|
||||
'width' => $maxX,
|
||||
'height' => $maxY,
|
||||
'stripmeta' => 'true',
|
||||
'type' => $mimeType,
|
||||
'norotation' => 'true',
|
||||
'quality' => $quality,
|
||||
]
|
||||
];
|
||||
|
||||
try {
|
||||
$response = $httpClient->post(
|
||||
$imaginaryUrl . '/pipeline', [
|
||||
|
|
|
|||
Loading…
Reference in a new issue