[All in one] Error 400 - Imaginary unable to serve 250x250 thumbnails

Nextcloud version (eg, 20.0.5): Nextcloud Hub 5 (27.0.2)
Operating system and version (eg, Ubuntu 20.04): all-in-one containers
Apache or nginx version (eg, Apache 2.4.25): ^whatever is included here
PHP version (eg, 7.4): -||-

The issue you are facing:
So, i’ve been pulling the little hair i have left trying to figure out why my desktop PC are not showing any thumbnails for .heic files. It works fine on my laptop which uses the same OS and browser (firefox on debian)

Turns out it’s related to scaling in the browser!

When i open a folder full off heic pictures i see nothing but the stock grey no thumb image. If i increase the zoom in firefox to 110% and refresh the page; voila! the thumbs work perfectly fine.

Looking at the requests i see that when i run 100% zoom it’s full of error 400s, bad request. Zooming in and it looks fine.


The difference being that when i run 100% zoom - if fetches thumbs in the size of 250x250, zooming in and the thumbs requested are 500x500. For some reason the nextcloud app is not able to serve the thumbs in 250x250. My desktop screen is 3440x1440 so it makes sense it wants lower res thumbs.

Note. This only happens in “Files”. Photos and other apps are OK.
Note Note: Other formats work fine. It’s only HEIC that has this issue.

Is this the first time you’ve seen this error? (Y/N): Yes

Steps to replicate it:

  1. Have a 3440x1440 monitor
  2. Open heic folder listing in “Files” in we browser
  3. Change zoom from 100 too 110% and refresh

The output of your Nextcloud log in Admin > Logging:
I only see logs from yesterday related to image requests even though i have tested things today so the log might not be related. Example:

[no app in context] Error: GuzzleHttp\Exception\ClientException: Client error: `POST http://nextcloud-aio-imaginary:9000/pipeline?operations=%5B%7B%22operation%22%3A%22autorotate%22%7D%2C%7B%22operation%22%3A%22fit%22%2C%22params%22%3A%7B%22width%22%3A256%2C%22height%22%3A256%2C%22stripmeta%22%3A%22true%22%2C%22type%22%3A%22png%22%2C%22norotation%22%3A%22true%22%2C%22quality%22%3A%2260%22%7D%7D%5D` resulted in a `400 Bad Request` response:
{"message":"Error while processing the image: Unsupported image output type","status":400}
 at <<closure>>

 0. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Middleware.php line 72
    GuzzleHttp\Exception\RequestException::create("*** sensitive parameters replaced ***")
 1. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/promises/src/Promise.php line 209
    GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
 2. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/promises/src/Promise.php line 158
    GuzzleHttp\Promise\Promise::callHandler(1, "*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
 3. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/promises/src/TaskQueue.php line 52
    GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}("*** sensitive parameters replaced ***")
 4. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/promises/src/Promise.php line 251
    GuzzleHttp\Promise\TaskQueue->run(true)
 5. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/promises/src/Promise.php line 227
    GuzzleHttp\Promise\Promise->invokeWaitFn()
 6. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/promises/src/Promise.php line 272
    GuzzleHttp\Promise\Promise->waitIfPending()
 7. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/promises/src/Promise.php line 229
    GuzzleHttp\Promise\Promise->invokeWaitList()
 8. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/promises/src/Promise.php line 69
    GuzzleHttp\Promise\Promise->waitIfPending()
 9. /var/www/html/custom_apps/fulltextsearch_elasticsearch/vendor/guzzlehttp/guzzle/src/Client.php line 189
    GuzzleHttp\Promise\Promise->wait()
10. /var/www/html/lib/private/Http/Client/Client.php line 297
    GuzzleHttp\Client->request("post", "http://nextclou ... e", ["/mnt/ncdata/fi ... "])
11. /var/www/html/lib/private/Preview/Imaginary.php line 147
    OC\Http\Client\Client->post("http://nextclou ... e", [["[{\"operation ... "])
12. /var/www/html/lib/private/Preview/GeneratorHelper.php line 62
    OC\Preview\Imaginary->getCroppedThumbnail(["OC\\Files\\Node\\File"], 256, 256, false)
13. /var/www/html/lib/private/Preview/Generator.php line 397
    OC\Preview\GeneratorHelper->getThumbnail(["OC\\Preview\\Imaginary"], ["OC\\Files\\Node\\File"], 256, 256)
14. /var/www/html/lib/private/Preview/Generator.php line 255
    OC\Preview\Generator->generateProviderPreview(["OC\\Files\\SimpleFS\\SimpleFolder"], ["OC\\Files\\Node\\File"], 256, 256, false, false, "image/gif", "")
15. /var/www/html/lib/private/Preview/Generator.php line 155
    OC\Preview\Generator->getSmallImagePreview(["OC\\Files\\SimpleFS\\SimpleFolder"], "*** sensitive parameters replaced ***", ["OC\\Files\\Node\\File"], "image/gif", "", false)
16. /var/www/html/lib/private/Preview/Generator.php line 116
    OC\Preview\Generator->generatePreviews(["OC\\Files\\Node\\File"], [[250,250,false,"fill"]], "image/gif")
17. /var/www/html/lib/private/PreviewManager.php line 192
    OC\Preview\Generator->getPreview(["OC\\Files\\Node\\File"], 250, 250, false, "fill", "*** sensitive parameters replaced ***")
18. /var/www/html/core/Controller/PreviewController.php line 144
    OC\PreviewManager->getPreview(["OC\\Files\\Node\\File"], 250, 250, false, "fill")
19. /var/www/html/core/Controller/PreviewController.php line 113
    OC\Core\Controller\PreviewController->fetchPreview(["OC\\Files\\Node\\File"], 250, 250, true, false, "fill")
20. /var/www/html/lib/private/AppFramework/Http/Dispatcher.php line 230
    OC\Core\Controller\PreviewController->getPreviewByFileId(105931, 250, 250, true, false, "fill")
21. /var/www/html/lib/private/AppFramework/Http/Dispatcher.php line 137
    OC\AppFramework\Http\Dispatcher->executeController(["OC\\Core\\Cont ... "], "getPreviewByFileId")
22. /var/www/html/lib/private/AppFramework/App.php line 183
    OC\AppFramework\Http\Dispatcher->dispatch(["OC\\Core\\Cont ... "], "getPreviewByFileId")
23. /var/www/html/lib/private/Route/Router.php line 315
    OC\AppFramework\App::main("OC\\Core\\Controller\\PreviewController", "getPreviewByFileId", ["OC\\AppFramewo ... "], ["core.Preview.getPreviewByFileId"])
24. /var/www/html/lib/base.php line 1071
    OC\Route\Router->match("/core/preview")
25. /var/www/html/index.php line 36
    OC::handleRequest()

GET /core/preview?fileId=105931&c=6bbfe5977bd962b98521ebec3fdcb971&x=250&y=250&forceIcon=0&a=1
from 192.168.3.39 by XYZ at 2023-09-06T19:27:10+00:00

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

Fully default from docker aio, can be fetched on your request.

The output of your Apache/nginx/system log in /var/log/____:


192.168.3.39, 172.31.0.3 - - [07/Sep/2023:20:32:39 +0200] "GET /core/preview?fileId=94174&c=d502aa5abdddd27af0742840a67a3a46&x=250&y=250&forceIcon=0&a=1 HTTP/1.1" 400 2 "REDACTED/2023&fileid=83373" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0"
192.168.3.39, 172.31.0.3 - - [07/Sep/2023:20:32:39 +0200] "GET /core/preview?fileId=94163&c=d4d656821e883270d084d880b10abb17&x=250&y=250&forceIcon=0&a=1 HTTP/1.1" 400 2 "REDACTED/2023&fileid=83373" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0"

Output errors in nextcloud.log in /var/www/ or as admin user in top right menu, filtering for errors. Use a pastebin service if necessary.

https://pastebin.com/0ds0ZpX6

Fixed by Generate all preview sizes for Imaginary by enoch85 · Pull Request #40731 · nextcloud/server · GitHub

2 Likes

This topic was automatically closed 8 days after the last reply. New replies are no longer allowed.