Giter VIP home page Giter VIP logo

lymphatus / caesium-image-compressor Goto Github PK

View Code? Open in Web Editor NEW
2.3K 27.0 157.0 2.24 MB

Caesium is an image compression software that helps you store, send and share digital pictures, supporting JPG, PNG and WebP formats. You can quickly reduce the file size (and resolution, if you want) by preserving the overall quality of the image.

Home Page: https://saerasoft.com/caesium

License: GNU General Public License v3.0

C++ 83.45% Shell 0.31% CMake 4.77% C 9.66% Inno Setup 1.26% Objective-C++ 0.55%
image-compression caesium libcaesium compression cross-platform macos windows linux

caesium-image-compressor's Introduction

Caesium Image Compressor

Build

Try it directly on browser at caesium.app

v2.7.0

caesium_screenshot_20240413

Special Thanks

7eventech77


What is it for

Caesium is an image compression software that helps you store, send and share digital pictures, supporting JPG, PNG and WebP formats.
You can quickly reduce the file size (and resolution, if you want) by preserving the overall quality of the image.

Supported Platforms

  • Windows: 10 (build 1809 or later) (use old version v1.x for Windows 7 or 8 - link)
  • MacOS: 10.15+
  • Linux: tested on Ubuntu 22.04 and Manjaro

Note: only 64bit versions are supported

Installation

Head to the releases' page for the available downloads.

  • Windows: installer and portable versions are available
  • MacOS: DMG package
  • Linux: compile the source code yourself, or download binary from third-party build

Note that the main branch can contain unstable code. If you want to build on a stable version, use a tagged version.

Troubleshooting and/or feature request

Please open an issue.

Build from source

Requirements
  • Rust: required to compile libcaesium. Make sure you have cargo executable on you $PATH
  • Qt6 SDK: binaries are built on 6.5.3 (open source)
  • libssh: macOS only
  • Sparkle: macOS only. Only version 1.27.1 is supported.

Build

Step 0 (macOS Only)

You need to set up Sparkle in order to compile the project

brew install --cask https://raw.githubusercontent.com/Homebrew/homebrew-cask/c6dfe6baf1639998ba1707f68668cf8fa97bac9d/Casks/sparkle.rb
sudo cp -R /usr/local/Caskroom/sparkle/1.27.1/Sparkle.framework /Library/Frameworks/Sparkle.framework
Step 1

You need to configure CMake first and the command is slightly different for all the platforms: Change the path in variables with the correct directories of the requirements.

Windows
cmake -B build_dir -DCMAKE_PREFIX_PATH=/path/to/Qt/version -G "MinGW Makefiles"
MacOS
cmake -B build_dir -DCMAKE_PREFIX_PATH=/path/to/Qt/version/macos -DLIBSSH_INCLUDE_DIR=/libssh/dir/include -DSPARKLE_INCLUDE_DIR=/usr/local/Caskroom/sparkle/1.27.1/Sparkle.framework/Versions/Current/Headers
Linux

Make sure you have all the requirements installed with you own package manager

cmake -B build_dir -DCMAKE_PREFIX_PATH=/path/to/Qt/version/gcc_64
Step 2

Then you can build with

cmake --build build_dir --config Release --target caesium_image_compressor

Languages and translations

The 1.0 version of Caesium had a lot of community made translations, but this 2.0 release has a whole new set of strings and no old translations can be used anymore.
Caesium 2.0 is currently available in:

  • EG 64%
  • DE 78%
  • GR 75%
  • US 99%
  • ES 73%
  • FI 77%
  • FR 73%
  • IN 76%
  • ID 74%
  • IT 100%
  • JP 78%
  • PL 74%
  • BR 81%
  • RU 81%
  • SK 73%
  • TR 74%
  • CN 78%
  • TW 77%

How to contribute with your translation

You can help translate by opening the resources/i18n/caesium_en_US.ts with QtLinguist or any XML editor. Rename it to your language (e.g. caesium_it_IT.ts) and translate all the sentences. Then you can start a pull request with your translated file.
See this pull request as an example. Thanks to all the people who contributed.

caesium-image-compressor's People

Contributors

4g3nt avatar ahohnmyc avatar all07-07 avatar anggraanutomo avatar anuragsingh6 avatar asgatlat avatar bainky avatar epicgazel avatar franndzs avatar garywill avatar jcalado avatar jtojnar avatar kmomberg avatar luiz-c-lima avatar lymphatus avatar maboroshin avatar mcjczapiewski avatar mesubasi avatar nickyc975 avatar prayagverma avatar rukoto avatar theoware avatar viktoron avatar wideocean avatar zoltus avatar zyk007 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

caesium-image-compressor's Issues

File-/pathname problems with umlauts (äöüß) and more than one dot (.) in filename

If the file- or pathname has german characters like umlauts (ÄÖÜäöüß) the picture(s) are not converted (red dot before filename instead of a green dot and nothing was created).

The second problem occurs if there is more than one dot (.) in filename:
Source: Prof. Bauer-4711.jpg
Target: Prof_caesium. Bauer-4711.jpg
Expected: Prof. Bauer-4711_caesium.jpg
Maybe you can use only the most right dot in filename?

And the third thing (maybe not a bug but a feature request):
If I choose the target folder and uncheck "Same folder as input" the option "Keep folder structure" is greyed out. It would be great to use this feature too. If I didn't want to save the files in the source directory structure but save it to another directory, all the files will be saved in the same target directory despite of any folder structure.
It would be perfect if I could save the complete file and folder structure to a new directory (original => compressed) with the same path and filenames but compressed.

Tested version: caesium-image-compressor-2.0.0-alpha.3-win.zip under Windows 10 Professional 64 Bit (German)

Thanks,
Miriam

Simplified Chinese is not displayed completely in the language setting

Simplified Chinese in the language setting is incomplete, I hope it can be optimized, thank you. If necessary, I can set the simplified language. But I didn't see how to set the language in the source code.
语言设置里简体中文显示不完整,希望能优化一下,谢谢。如果需要我可以来设置简体语言。但是我在源代码里没有看到如何设置语言。

Beta 4: Advanced mode button doesn't change when switching between easy/advanced mode

A small issue - just thought you should know.

Snipaste_2021-05-01_12-31-25
Snipaste_2021-05-01_12-31-34

Also, I did a quick side-by-side comparison between 1.7.0 and 2.0.0 beta 4, both with 98% quality using jpg. It seems that 2.0.0 gives a bigger file size (13.8mb vs 12.9mb) but gives better quality, especially at the edges of in-photo objects. I think I'll switch to 2.0.0 from here on. Thanks for all your work!

[URGENT] Instead of freeing up space, it is consuming more.

Caesium v.2.0.0 alpha 3
When converting instead of freeing space I am losing space in my hard drive.

Example:
Free space on hard drive before converting 150 jpg images (1gb size, about 6k pixels each): 6gb
After converting all the images: 5gb

The images were smaller, after conversion, instead of 1gb they were down to 19,7mb.
But somehow I lost 1gb in space in my hard drive.

Tried to replicate this problem with Caesium 1.7.0 it didn't happen, it's converting and freeing the space.

Tried this multiple times, and lost some GB in the process.
It's a known bug?

Compression Option in v2

When compressing, most image and design applications leverage the percentage as compression. You had this in the previous version but right now, the UI shows Speed -> Quality with 5 positions.

It is hard to know what position 3 or 4 would be. How are you quantifying this scale that is being used? It would be nice to have either a quantified scale or a sample image below that adjusts based on the compression quality chosen.

Batch Resize based on Width and auto height

Thank you for this great application

I think it is great if you implement the way to set width in a value and set height to auto (Keep Aspect Ration) and vise versa in batch mode
in this way we can set maximum value for width or height while we keep the aspect ratio for all images

Thank you so much
Regards

Possible Bug: Failure to Process on Mapped Network Drives

Caesium seems to be unable to work with any data that are not local, such as mapped network drives from my NAS.

The drive is hosted by OpenWRT, has NTFS underlying it, and is using SMB v3. Full read/write permissions are granted to any users on my local network. Other programs can work with these mounted drives just fine.

Development status?

I don't want to be that guy, but there is no news for some time here or social media. Could you please share some updates? Thanks!

Chocolatey

Hi!

Can you, please, consider to make Caesium available on Chocolatey?

@teknowledgist already did it an unofficial version. Maybe it can be linked to release process.

Thank you!

FR: - "Save the sky" option - option to save big areas of relatively similar details - different compression setting for different image zones

With higher image compression (that works great on image zones with complex content, e.g. tree leafs, or lawn with flowers to name a few) sky can get "corrupted", or too compressed.

It would be great if we could choose different compression settings (or even better, if algorithm does that automatically) for different content "zones" to call them.

If overcompressed sky looks very bad, you don't even need to go and look at 1:1 (one pixel of image for one pixel shown on screen) to notice it. But, with same compression settings, you achieve great results with different content that has more "texture" to it.

If we could choose different compression settings for different content, or even better, that algorithm does that automatically, we would be able to achieve higher compression (i.e. smaller image sizes) and keep images to look "more decent" so to say.

Advanced JPEG Compressor has setting for something like this, but I think you could achieve even better results over them as your image compression algorithm is far superior, but at the moment it "fails" with sky and similar content. Sky is most noticeable area in images, relatively big area with similar colors and here algorithm goes "to the max", hoping to save space, but in same time it just goes a bit too far with that space saving.

If you could find some way to "save the sky", it would be really great, and images could be compressed even a bit more without looking too "washed out" in my opinion. Which would make your software even better.

Program irregularly exits (crashes) when directory where it saves compressed files is monitored by FastStone Image Viewer (or maybe with some other programs as well)

Just played a bit with program, to see how it behaves, how it compresses (here I'd like to mention to have more options for compression level, but I know it is planned in future releases) and I had strange crashes, or irregular exits.

Program was still "alive" in some way, needed to kill process with task manager to be able to delete partially compressed images as Casesium still kept them open.

After some time I discovered, this was because I had FastStone Image Viewer monitoring folder where I dumped compressed images. And FastStone Image Viewer dynamically stores image info in some kind of DB (probably for faster opening). So, as images where written in directory, I guess that FastStone in some way disrupted Caesium writing process in such way that it crashed.

Not sure if some other programs are able to do something similar, but for the moment I just exit FastStone Image Viewer, or point it to somewhere else.

Compressing big images

Hi!
I'm currently trying to compress a 12716x17977 sized PNG file. However, when I set all the parameters and start conversion, no output is generated.
I tried changing the output formats and resizing, all to no avail.
Is there a limitation to the maximum image resolution?

EXIF data not copied from original

Windows 10
Version 2.0.0-alpha.4, Advanced Mode,, Keep Metadata=Ticked, Do Not Enlarge=Un-ticked, Resize 50%, Quality 27.
The compression is fast and produces small file sizes but does not copy EXIF data from the original jpeg file.
The program was run as 'Administrator' to convert files on an external USB drive into the same folder with a suffix added to the compressed filename.
Version 1.7.0 compresses and keeps the EXIF data for the same files if 'Skip if the output size is greater than the original' = Un-ticked.

Suspected floating point overflow

I compressed a lot of pictures, and then the problem shown in the figure below appeared.
error

Operating System: Windwos10 X64 1909;
version: 1.7.0

Unable to Launch on macOS Mojave

After installing the v2.0.0-alpha.2 an alert dialog will be open with the message

Caesium Image Compressor cannot be opened because of a problem.

Check with the developer to make sure Caesium Image Compressor works with this version of macOS. You may need to reinstall the application. Be sure to install any available updates for the application and macOS.

dyld: launch, loading dependent libraries

Dyld Error Message:
  Library not loaded: libzopfli.1.dylib
  Referenced from: /Applications/Caesium Image Compressor.app/Contents/Frameworks/libcaesium.dylib
  Reason: image not found

Binary Images:
       0x10978e000 -        0x1097b7fff +com.saerasoft.caesium (0) <62F31A04-1B12-3B5F-8388-B08CB1992FC5> /Applications/Caesium Image Compressor.app/Contents/MacOS/Caesium Image Compressor
       0x1097d4000 -        0x109826ff7 +libcaesium.dylib (0) <01EBDDC5-B91C-3F46-8470-5716F0486057> /Applications/Caesium Image Compressor.app/Contents/Frameworks/libcaesium.dylib
       0x10982f000 -        0x109862ff3 +org.qt-project.QtSvg (5.12 - 5.12.8) <6312A82E-B9E0-3817-9D16-AA3E2134DC5C> /Applications/Caesium Image Compressor.app/Contents/Frameworks/QtSvg.framework/Versions/5/QtSvg
       0x109881000 -        0x109cbfff7 +org.qt-project.QtWidgets (5.12 - 5.12.8) <CAC50E2E-DC1C-37F4-8BEF-9953C603230F> /Applications/Caesium Image Compressor.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets
       0x109e28000 -        0x10a276fe7 +org.qt-project.QtGui (5.12 - 5.12.8) <6D5A30B0-E836-303B-B20F-BA809ABF7D57> /Applications/Caesium Image Compressor.app/Contents/Frameworks/QtGui.framework/Versions/5/QtGui
       0x10a37e000 -        0x10a382ff7 +org.qt-project.QtConcurrent (5.12 - 5.12.8) <A6F0EAB9-D122-3FDE-A112-280F346032C0> /Applications/Caesium Image Compressor.app/Contents/Frameworks/QtConcurrent.framework/Versions/5/QtConcurrent
       0x10a386000 -        0x10a8bbff7 +org.qt-project.QtCore (5.12 - 5.12.8) <AB81B515-9C42-3545-B1D2-06E8090C5422> /Applications/Caesium Image Compressor.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore
       0x10a97e000 -        0x10aa1dff3 +libjpeg.62.dylib (0) <F0BE6AD8-219D-333F-8AD1-8085C3399171> /Applications/Caesium Image Compressor.app/Contents/Frameworks/libjpeg.62.dylib
       0x10aa2a000 -        0x10aadeffb +libturbojpeg.0.dylib (0) <FC9DEF68-35D5-39FB-AF15-79D7E401D5EB> /Applications/Caesium Image Compressor.app/Contents/Frameworks/libturbojpeg.0.dylib
       0x114dfc000 -        0x114e8df47  dyld (750.6) <F9D4DEDC-8296-3E3F-B517-9C8B89A4C094> /usr/lib/dyld
    0x7fff293ce000 -     0x7fff293d2ffb  com.apple.agl (3.3.3 - AGL-3.3.3) <204E20A9-AEA9-3F9F-AE23-EECE3AFFFC54> /System/Library/Frameworks/AGL.framework/Versions/A/AGL
    0x7fff2feb0000 -     0x7fff2feb6fff  com.apple.DiskArbitration (2.7 - 2.7) <63923E3F-1489-3762-B5EB-5CE28A35FF50> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff3092a000 -     0x7fff309ceff3  com.apple.framework.IOKit (2.0.2 - 1726.140.1) <14223387-6F81-3976-8605-4BC2F253A93E> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff386b6000 -     0x7fff386c5ff7  com.apple.opengl (17.10.22 - 17.10.22) <D3C57A32-6BD0-3228-B1C4-0F42A6128A6C> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff64c31000 -     0x7fff64c32fff  libSystem.B.dylib (1281.100.1) <C0C9872A-E730-37EA-954A-3CE087C15535> /usr/lib/libSystem.B.dylib
    0x7fff64f17000 -     0x7fff64f69fff  libc++.1.dylib (902.1) <59A8239F-C28A-3B59-B8FA-11340DC85EDC> /usr/lib/libc++.1.dylib

AVIF

Hi!

Any plans for AVIF support? Chrome already supports it and Firefox in on its way.

Bug: Exif data stripped

If you try to compress images with replace in the same directory, then image's exif data will be stripped from photos (even if there is active the option to keep exif data)

Se provi a comprimere le foto rimpiazzando gli originali il programma rimuove i dati exif dalle foto (anche se nelle opzioni è spuntato il flag per tenere gli exif)

"Do not enlarge" not working

Love Caesium but the "do not enlarge" option seems not working.
System: Win 10 Workstation ; Caesium Image Compressor : v2.0.0-alpha.3

Suggestion

I know its called an image compressor, but if you could have a ffmpeg section to slim down video that would be absolutely fantastic.

Because at the moment, I have to use a separate program to compress videos. It would be awesome to be able to do it alongside all the images in Caesium.

Just the standard filters, video settings, and audio bitrate would be fine. I always set the crf to around 24 on fast to shed off some of the extra data.

Auto-rotate image

This app works well. I've noticed that if an image has the wrong orientation, the compressed file keeps that wrong orientation.

Could you add an option to auto-rotate images according to the EXIF (or other) data?

Feature Request: Remember/skip already optimized files

FileOptimizer does something similar by recording the path/name of the files it has successfully optimized, but I think a better/more robust approach would be hashing all files as they are added to Caesium and storing the hash. After compression, re-hash the file and write it out to a file (database? SQLite?) as another optimized hash.

If files are re-added in the future and their hash shows up as already optimized, set the status as optimized and skip them in processing. You'd have to do a lookup/search against the optimized hash table.

This would also require the ability to force/re-optimize files.

New feature: compress image to desired output size (bytes not pixels)

It would be great if - as an alternative to setting the compression rate - the user is allowed to enter the size of the output file and Caesium compresses the file accordingly.

Example:
I need a forum avatar to be smaller than 1024 KB, so I enter '1023' in the 'Output size (KB)' box.
Caesium automatically chooses the quality of the compression to meet my demands, and it compresses the picture accordingly.
The output file is approximately 1023 KiloBytes.

This exact feature does already exist in Adobe Lightroom's export settings, but to install / open such an expensive and resource-heavy software only to compress a picture is a bit overkill for most users.

Downloading updates over plain HTTP

I'm not up to date on QT, windows or C++ development, so if I'm being ignorant, please forgive me.

From having a quick look at the source code it looks like you are downloading updates over plain HTTP. This would mean that it's trivial to hijack the computers of users of this software.

I would recommend to at very least use HTTPS with proper certificate validation for downloading updates.

compilation error pls help

/home/ewall-desk-05/caesium-image-compressor/caesium/src/utils.h:30: error: QTemporaryDir: No such file or directory
#include
^

Why errors on compress? + Suggestions

Why there are some errors?
The files are fine.
Maybe some algo needs improvement or something?

er1
er2

Another thing: zooming in/out in preview only works on original, not on compressed image - So not useful.

er3

+any option for compressing gif too?
+it would be better/perfect if preview for seeing changes was working like on click mouse/keyboard & instant image swap, like here:
https://slow.pics/

I am using version 1.7


btw. I also tried v2.0.0-alpha.2 now and it looks like older and worse version, why? I mean little options, configurations and generally less functions. Not even setting quality by numbers but only with slider and it is very slow even if max speed is set. It will be added in the future?

Can only compress if the resize option is checked (v2.0.0-alpha.4)

Im testing v2.0.0-alpha.4 on a Windows 10 machine. I guess I have the latest update.

It seems to only preform a compress if "Resize" is checked and I actually do a resize.
I tried to set "Rezize to fit" to "Percentage" and "Width:" and "Height" to 100%. But that did not work. No compressed image in the selected folder and a red dot in the image list indicating that the image wasn't compressed.

If do an actual resize of the image, then the image gets compressed. There a compressed image in the selected folder and a green dot in the image list indicated everything went fine.

I have only tried with jpeg so far.

Caesium 1.7.0: Keep original date information fails when overwriting

I didn't see "Keep original date information" in alpha 3, so I assume it hasn't been implemented yet. When it is implemented, here's an oversight I discovered from 1.7.0 that could hopefully be corrected:

When "Keep the original Date information" is selected in options and the compressed image overwrites the original ("Same folder as input", same format, no suffix), the timestamps of the overwritten file change.

Thank you.

Concurrent compression?

Seeing if this has been considered. Had ~40,000 images to compress and was sad to see that this only utilized ~4% of my available processing power...

I regularly write concurrent processing tasks in my projects, though I work in C#, which makes it pretty easy to handle threads. This appears to be a task that is relatively simple to parallelize since it wouldn't have to worry much about contention on shared resources save for the UI? Then again, I know little about this project, it could be very difficult in the current codebase, spitballing.

crash on startup - libzopfli.dll missing

Hi, just flagging a simple bug with (presumably) a simple fix.

The latest windows x64 release crashes on startup, saying libzopfli.dll is missing. My little hack to make it work was to copy zopfli.dll and rename it to libzopfli.dll .

Thanks for the app, very useful :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.