-
-
Notifications
You must be signed in to change notification settings - Fork 199
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
Lower performance when multiple images overlap #326
Comments
Hi,thanks for testing Akira. Nonetheless, this is a great report and we'll keep an eye on this behavior once we start refining this feature. Currently we don't have any buffering, compression, caching, or optimization going on, so you're pretty much moving the full raw data all the times. I'll keep this issue open as a future reference. |
I finally found an easy solution for this, which I think is the same trick the Sketch and Figma use to deal with many large images. We already have in place a DPI lowering method that re-renders the image based on their scaling. So if you import a 8000x8000 pixels image at 300 DPI, but you resize it down to 400x400, we recalculate the pixbuf to return an equally sharp image but for the new resolution, instead of compressing those 8K pixels in a smaller container, which affects performance and makes the image hard to see. Currently, we don't do anything when zooming in and out the canvas, which in practice it's actually resizing the canvas size and all its items. Solution: Reduce the image quality based on the Canvas zoom ratio. If you zoom out, for example at 50% zoom, we can recalculate the pixbuf of all the images currently inside the viewport, and return a slightly compressed version of those items, since you don't need to look at those at full quality, and you probably have many images in the viewport and you're interacting with those. All this temporary "quality reduction" will obviously be ignored during export, which always grabs the maximum available resolution of the image, allowing users to reduce the quality independently. |
Davinci resolve uses same technique to deal with high resolution videos. |
Expected Behavior
Performance should be the same regardless of overlapping images
Current Behavior
When moving an image and it overlaps the responsiveness of the program decreases.
Possible Solution
Have some sort of culling engine? (No idea, using my game dev brain)
Steps to Reproduce (for bugs)
Import multiple images
drag an image on top of one or many images.
Context
I constantly work with high resolution images and this would make the software a pain to use
Screenshots of the Problem
https://gfycat.com/elatedpiercingkissingbug
Your Environment (for bugs)
The text was updated successfully, but these errors were encountered: