Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration of Preview Generator Alongside Imaginary in Nextcloud VM #2589

Closed
n0one42 opened this issue Nov 9, 2023 · 8 comments
Closed

Comments

@n0one42
Copy link

n0one42 commented Nov 9, 2023

Overview

I've been utilizing the Nextcloud VM script setup which incorporates Imaginary as a Docker container, and it's been functioning exceptionally well. My question pertains to the integration of the Preview Generator.

Previous Tickets

Before reaching out, I took the time to look through the closed tickets related to the Preview Generator and couldn't find the information I was looking for. I hope I'm not overlooking anything that's already been addressed.

Details

The script seamlessly integrates Imaginary into the environment. However, throughout various guides and recommendations for Nextcloud, there's a consistent mention of using Preview Generator alongside it for thumbnail generation and faster loading times for images.

Question

Is there a specific reason why Preview Generator isn't included in the default setup? Given its widespread recommendation, it seems like it would be a valuable addition to the Nextcloud VM.

  • Is there a concern about additional resource usage?
  • Does Imaginary cover the same functionality sufficiently?
  • Or is it something that's planned for future releases?

Suggestion

If there are no specific reasons against it, I would suggest considering the inclusion of Preview Generator in the Nextcloud VM project. It could enhance user experience by improving the speed and responsiveness of image previews. Also the manuall trigger of generation.

Off topic

I apologize if this question has already been addressed elsewhere or if it's a repeated concern.
Also, I'm sorry for bothering again...

Thank you for your time and this excellent project.

@enoch85
Copy link
Member

enoch85 commented Nov 9, 2023

throughout various guides and recommendations for Nextcloud, there's a consistent mention of using Preview Generator alongside it for thumbnail generation and faster loading times for images.

Well, Imaginary replaces that - that's the whole idea. Since it's much faster on the fly there's no need for a background preview generator.

Given its widespread recommendation

It was recommended (and we used it) before Imaginary came to life. The posts and recommendations you are reading are pre-Imaginary.

@n0one42
Copy link
Author

n0one42 commented Nov 9, 2023

From my understanding, the Nextcloud Preview Generator pre-generates thumbnails and stores them locally for quick access, thereby eliminating load times. Conversely, Imaginary processes images on-the-fly, which means it generates a thumbnail each time an image is accessed. While this approach may conserve disk space, it could potentially increase loading times.

Is this interpretation correct?

I'm exploring this topic because I've noticed that thumbnail generation and display within the Files or Photos app can be quite sluggish, especially with a large number of pictures. I'm considering whether using the Preview Generator to create thumbnails in advance, while still leveraging Imaginary as a fallback for new or unprocessed files, could improve performance.

Do you think, this would help?

@enoch85
Copy link
Member

enoch85 commented Nov 9, 2023

Imaginary processes images on-the-fly, which means it generates a thumbnail each time an image is accessed. While this approach may conserve disk space, it could potentially increase loading times.

Yes, it does process them on the fly, but once generated, it will stay generated - so it's only the first time it's slower.

Do you think, this would help?

Yes and no. Preview generator will consume a lot of (unnecessary) disc space generating thumbnails for pictures you never will see anyway. Imaginary generates them one time when pictures are shown, and needed. Once generated they will stay generated. So IMHO there's no need for Preview Generator.

@n0one42
Copy link
Author

n0one42 commented Nov 9, 2023

Thank you for sharing your perspective. Viewing it from this angle, I would agree with your opinion. The efficiency of generating thumbnails as needed, and the subsequent availability without repeated processing, seems like a more optimized approach compared to using disk space for potentially unused thumbnails.

@n0one42 n0one42 closed this as completed Nov 9, 2023
@enoch85
Copy link
Member

enoch85 commented Nov 9, 2023

I'm happy you're so active with your suggestions though. :)

@invario
Copy link

invario commented Feb 24, 2024

I realize this is closed but wanted to chime in my 2 cents here.

The Memories app (which is what I default to using instead of Photos) still strongly recommends PreviewGenerator;
https://memories.gallery

If you haven't checked out Memories, I encourage you to do so. I started using it over a year ago and haven't looked back since. The user experience on it is absolutely amazing, even on mobile. It also allows for (with some configuration/setup) transcoding of videos to lower bandwidths and resolutions.

There's also a misconception here that PreviewGenerator actually generates thumbnails by itself; it does not. PreviewGenerator hooks into Nextcloud and uses whatever previewprovider is enabled for the file types it encounters.

In other words, if you have Imaginary installed and configured right (like I did) and you use PreviewGenerator to "occ preview:generate-all", NC will generate the preview through use of Imaginary. Likewise, if you don't have Imaginary installed but you have Imagick installed, NC will call Imagick instead.

I have quite a large number of photos and images; my NC installation is used exclusively for that. I recently tried moving to Imaginary to generate previews on the fly and found the experience basically unacceptable if previews haven't been pre-generated.

Nothing, I reepeat, NOTHING, will be deliver as smooth and quick an experience as pre-generating previews/thumbnails. On the fly can never be fast as pre-generated, especially if you like scrolling through the timeline.

If I recall correctly, my entire previews folder took up something like 30-40GB of space for 5 family members including me. I alone have well over 500GB of photos/videos... so I'm thinking combine we're somewhere close to 1TB. So like all things, it's a tradeoff. I'm willing to make that 4% tradeoff for now.

I'm currently removing imaginary and just sticking with plain ole' Imagick.

imaginary is scaleable and that's what's cool about it BUT it's slower when running on the same installation/server as NC. Think about it... imaginary generates its previews by having the entire image transferred via HTTP from NC to the Imaginary server, then sending the preview back. Imagemagick generates previews via direct access to the file, on the same server as NC.

Sorry for the lengthy reply!

@enoch85
Copy link
Member

enoch85 commented Feb 24, 2024

plain ole' Imagick

Maybe you should type: plain ole' unsecure imagick? Imagick has been known for a lot of CVEs in the past, and choosing that also lowers your security.

nextcloud/server#13099

Thanks for your input though. 👍🏼

@invario
Copy link

invario commented Feb 24, 2024

plain ole' Imagick

Maybe you should type: plain ole' unsecure imagick? Imagick has been known for a lot of CVEs in the past, and choosing that also lowers your security.

nextcloud/server#13099

Thanks for your input though. 👍🏼

Fascinating thread, thank you for the link! Reading through it now and will certainly take it into consideration. At this point, switching back to imaginary for me is pretty easy since I've familiarized myself with the process. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants