rbreu / beeref

BeeRef Reference Image Viewer
GNU General Public License v3.0
501 stars 37 forks source link

[feature] reduce file size by storing images as URIs or as webp #40

Closed Gnumaru closed 9 months ago

Gnumaru commented 2 years ago

I would like to suggest creating options for storing the image data inside the .bee file as webp and to also be able to store image URIs instead of direct image data.

I suppose beeref stores the image data as png, since I saved one .bee file with only one .png into it, and the size of the .bee was about 16KB larger than the .png, and and empty .bee file is also about 16KB.

Using png is great to keep quality, but since most usecases for saving a reference image boards would not necessarily need this amount of quality, I would suggest to store the image data using lossy algorithms, preferably webp, since this would significantly reduce the file size.

Aside from storing images as webp, storing URIs would give the most drastical reduction since most images would be reduced to a small URI with probably less than 256 characters.

PureRef has the ability to store only references to filesystem images, but I never found this much useful because having a bunch of separate files that needed to be together without never being renamed wasn't nice. But if beeref could store URIs for images from the web and download them upon opening the reference board eac time, this would be really nice, since the majority of the reference images come in fact from the web.

I would suggest the functionality to be like this: when dragging a file from the web onto beeref, the URI would be stored by default instead of the image data. If the user would like to convert that reference to actual stored data, he could right click it and choose something like "make available offline". And in order to choose whether the images are stored as png or webp, there could be a command line argument (since there is no options menu yet) specifying the image format and compression level, like "beeref --texture-format=webp --compression-level=80". Without specifying any argument, the default would be like it is now using png.

Gnumaru commented 2 years ago

Only now I have read #34. I'm glad you're already thinking about an opt-in to embed images as jpeg and store file system references. But I would like to insist that embeding URIs from the web and downloading the images each time will yield better usability, and embeding as webp will yield better disk space savings.

linuxgirl22 commented 2 years ago

A +1 for the #34 jpg option, as really don't want linking into web urls or to use webp.

rbreu commented 9 months ago

Commit https://github.com/rbreu/beeref/commit/7bef12289669de8ee465fbff825b8923e0d976db introduces the option to store the images as PNG, JPG, or a default "best guess". This reduces bee file sizes a lot, so I'll close this issue for now.

This change will go out in the next release.