If you are anything like me you will also have a download folder filled with hundreds of cat pictures, memes, gifs, and other images.
GDImageDB is meant to offer an easy way to collect, tag, and find your cat- (and other) pictures. It is completely offline and meant to be used with synchronization tools like syncthing, onedrive, dropbox, etc.
You can get it for free over here:
6 Likes
Big update: Full video support has finally arrived!
Thanks to the EIRTeam.FFmpeg extension I can now support most common video formats.
Video controls have been added to the media viewer.
Also, the sidebar for the grid views has also been reworked to be more user friendly. It now features mouse controls and displays the global tag list for easier selection.
1 Like
Now open source!
See the news post Replace File & Source Code release - GDImageDB by SpiceOctopus or the project page for a link to the source.
1 Like
Yet another update: Polish and Performance - GDImageDB by SpiceOctopus
This one is probably more interesting for my fellow godot devs than it is for the average user.
GDImageDB has a bit of a performance struggle to deal with, in the form of far too many control nodes. With my reference database (>7k pieces of media, >500 tags) loaded, I am surpassing 20000 control nodes at this point.
While this still handles fine in the code, it does impose some unfortunate loading times on the user.
To solve this I first went to move every major part of the ui into a seperate thread - easily done with the GD4 WorkerThreadPool. This drastically reduced the initial load time of the program.
Then I went to split shared ui scenes into their own seperate scenes to simply remove unnecessary (normally hidden) controls, which brought about a 30% reduction in control count.
However, there was still one more thing I wanted to change. My ui uses a lot of buttons. Buttons are really not great for performance, which is most likely owed to them rendering text.
I donβt really need text rendering though, just the symbols β+β and β-β.
Using panels instead of buttons and building shaders to draw those two symbols brought another 40% performance improvement for the button-having elements.
Panels really have the functionality you need to implement a simple button. Mouse enter/leave, as well as gui_input signals are already there. All you need to add are some graphics.
2 Likes