Giter VIP home page Giter VIP logo

caesium-clt's People

Contributors

dependabot[bot] avatar iitii avatar lymphatus avatar n-nino avatar pandaft avatar yhh2021 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

caesium-clt's Issues

[WARNING] File ... was not compressed. Reason: Unknown (Code: 210)

Hi I just installed on ubuntu 22.04, cargo 1.68.0 using cargo build --release

Any file I trow at it, it gives me this error

[WARNING] File /home/test/htdocs/wp-content/uploads/2021/07/fashion-designer-template-hero-img-bg.jpg was not compressed. Reason: Unknown (Code: 210)
[WARNING] File /home/test/htdocs/wp-content/uploads/woocommerce-placeholder-300x300.png was not compressed. Reason: Unknown (Code: 210)
[WARNING] File /home/test/htdocs/wp-content/uploads/2021/07/fashion-designer-template-product-img-6.jpg was not compressed. Reason: Unknown (Code: 210)

im using this command:
test@server: ~/caesium-clt-main/target/release$ ./caesiumclt -q 90 -O -R -S -d -o /home/test/htdocs/wp-content/uploads /home/test/htdocs/wp-content/uploads

It compiled but coudn't install

I'm using WSL2.0 on Windows 10. My steps below;

For libcaesium

git clone https://github.com/Lymphatus/libcaesium
cd libcaesium && cargo build --release

For CLT. I followed from INSTALL.md

git clone https://github.com/Lymphatus/caesium-clt
cd caesium-clt
mkdir build && cd build
cmake .. -DLIBCAESIUM_PATH=/libcaesium/target/release
-- Configuring done
-- Generating done
-- Build files have been written to: /caesium-clt/build
make
Scanning dependencies of target caesiumclt
[ 14%] Building C object src/CMakeFiles/caesiumclt.dir/vendor/optparse.c.o
[ 28%] Building C object src/CMakeFiles/caesiumclt.dir/error.c.o
[ 42%] Building C object src/CMakeFiles/caesiumclt.dir/helper.c.o
[ 57%] Building C object src/CMakeFiles/caesiumclt.dir/main.c.o
[ 71%] Building C object src/CMakeFiles/caesiumclt.dir/shared.c.o
[ 85%] Building C object src/CMakeFiles/caesiumclt.dir/utils.c.o
[100%] Linking C executable caesiumclt
[100%] Built target caesiumclt
sudo make install
[100%] Built target caesiumclt
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/caesiumclt
-- Set runtime path of "/usr/local/bin/caesiumclt" to ""

I want to try test run command as caesiumclt (that's only)

caesiumclt: error while loading shared libraries: libcaesium.so: cannot open shared object file: No such file or directory

But I have libcaesium.so file in libcaesium builded dir in release/target relative path.

Test this command as ls -l libcaesium/target/release

total 8488
drwxrwxrwx 1 fatihmert fatihmert    4096 May 18 10:42 build
drwxrwxrwx 1 fatihmert fatihmert    4096 May 18 10:46 deps
drwxrwxrwx 1 fatihmert fatihmert    4096 May 18 10:42 examples
drwxrwxrwx 1 fatihmert fatihmert    4096 May 18 10:42 incremental
-rwxrwxrwx 1 fatihmert fatihmert     764 May 18 10:46 libcaesium.d
-rwxrwxrwx 2 fatihmert fatihmert 1339070 May 18 10:46 libcaesium.rlib
-rwxrwxrwx 2 fatihmert fatihmert 7347440 May 18 10:46 libcaesium.so

How to solve this?

The first leter of the path / directory is removed

say you have files under /home/ubuntu/imagetests/unoptimized/
and you want to output files to /home/ubuntu/imagetests/optimized/

/home/ubuntu/imagetests/unoptimized/Ch1/image1.jpg becomes /home/ubuntu/imagetests/optimized/h1/image1.jpg

/home/ubuntu/imagetests/unoptimized/Ch1/image2.jpg becomes /home/ubuntu/imagetests/optimized/h1/image2.jpg
ext.
included is a modified helper.c file that fixes the problem.

helper.zip

Ubuntu installation problem

Hi,

It's not easy to get this working on Ubuntu.

compile.log.txt

caesiumclt-jpeg.o: In function `cclt_jpeg_decompress':
/home/temp/CaesiumCLT/src/jpeg.c:211: undefined reference to `tjDecompressHeader3'
collect2: error: ld returned 1 exit status

Any idea what's the problem?

Output filename is the name of the subfolder (network storage)

caesiumclt -l -o /path/to/images/compressed /path/to/images

Sets the output filename as "compressed", so the output is just the last image with the wrong name. The image is correctly compressed however.

OS: MacOSX 10.10.5, using a Netgear STORA as network storage

a hang bug or a DoS bug

Hello, I found the hang bug in the master version of caesiumclt binary or its library.

Below are steps followed to reproduce the bug.
I used GCC 5.4 and AddressSanitizer (export CFLAGS="-g -fsanitize=address" CXXFLAGS="-g -fsanitize=address" LDFLAGS="-fsanitize=address" before make) to build it, this test file can cause hang bug.

Test case: hang.png

I tried to debug it with gdb using the following command: ./build/src/caesiumclt -q 80 -s 0.5 -o out hang.png
After typing r command, it hanged, so I type Ctrl+c to interrupt it.
The debug output is listed below:

stbi__zexpand (n=1, zout=0x7fffae5fb800 "", z=0x7fffffff7fa0) at /root/--/libcaesium/caesium/vendor/stb_image.h:3905
3905          limit *= 2;
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
──────────────────────────────────────────────────────────────[ REGISTERS ]───────────────────────────────────────────────────────────────
 RAX  0x44000001
 RBX  0x1
 RCX  0xfffffffeffa ◂— 0x0
 RDX  0x44000000
 RDI  0x7fff6a5fb800 ◂— 0x2220122222212200
 RSI  0x0
 R8   0x0
 R9   0x0
 R10  0xfffffffeff8 ◂— 0x0
 R11  0x44000000
 R12  0x7fffffff7fa0 —▸ 0x621000019167 ◂— 0xbebebebebebebebe
 R13  0x7fffffff7fc8 —▸ 0x7fffae5fb800 ◂— 0x0
 R14  0x7fffffff7fb4 ◂— 0xae5fb80000000000
 R15  0x7fffffff7fc0 —▸ 0x7fff6a5fb800 ◂— 0x2220122222212200
 RBP  0x22
 RSP  0x7fffffff7d50 —▸ 0x7fffffff7fb0 ◂— 0x1d
 RIP  0x7ffff6b5cba0 (stbi.parse_zlib+1584) ◂— add    esi, esi
────────────────────────────────────────────────────────────────[ DISASM ]────────────────────────────────────────────────────────────────
 ► 0x7ffff6b5cba0 <stbi.parse_zlib+1584>    add    esi, esi
   0x7ffff6b5cba2 <stbi.parse_zlib+1586>    cmp    eax, esi
   0x7ffff6b5cba4 <stbi.parse_zlib+1588>    jg     stbi.parse_zlib+1584 <0x7ffff6b5cba0>
    ↓
 ► 0x7ffff6b5cba0 <stbi.parse_zlib+1584>    add    esi, esi
   0x7ffff6b5cba2 <stbi.parse_zlib+1586>    cmp    eax, esi
   0x7ffff6b5cba4 <stbi.parse_zlib+1588>    jg     stbi.parse_zlib+1584 <0x7ffff6b5cba0>
    ↓
 ► 0x7ffff6b5cba0 <stbi.parse_zlib+1584>    add    esi, esi
   0x7ffff6b5cba2 <stbi.parse_zlib+1586>    cmp    eax, esi
   0x7ffff6b5cba4 <stbi.parse_zlib+1588>    jg     stbi.parse_zlib+1584 <0x7ffff6b5cba0>
    ↓
 ► 0x7ffff6b5cba0 <stbi.parse_zlib+1584>    add    esi, esi
   0x7ffff6b5cba2 <stbi.parse_zlib+1586>    cmp    eax, esi
────────────────────────────────────────────────────────────[ SOURCE (CODE) ]─────────────────────────────────────────────────────────────
In file: /root/--/libcaesium/caesium/vendor/stb_image.h
   3900    z->zout = zout;
   3901    if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG");
   3902    cur   = (int) (z->zout     - z->zout_start);
   3903    limit = old_limit = (int) (z->zout_end - z->zout_start);
   3904    while (cur + n > limit)
 ► 3905       limit *= 2;
   3906    q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit);
   3907    STBI_NOTUSED(old_limit);
   3908    if (q == NULL) return stbi__err("outofmem", "Out of memory");
   3909    z->zout_start = q;
   3910    z->zout       = q + cur;
────────────────────────────────────────────────────────────────[ STACK ]─────────────────────────────────────────────────────────────────
00:0000│ rsp  0x7fffffff7d50 —▸ 0x7fffffff7fb0 ◂— 0x1d
01:0008│      0x7fffffff7d58 —▸ 0x7fffffff7fa8 —▸ 0x621000019167 ◂— 0xbebebebebebebebe
02:0010│      0x7fffffff7d60 —▸ 0x7fffffff7fb8 —▸ 0x7fffae5fb800 ◂— 0x0
03:0018│      0x7fffffff7d68 ◂— 0x22000000
04:0020│      0x7fffffff7d70 ◂— 0x212
05:0028│      0x7fffffff7d78 ◂— 0x38 /* '8' */
06:0030│      0x7fffffff7d80 —▸ 0x7fffffff841c ◂— 0x1000000010000
07:0038│      0x7fffffff7d88 —▸ 0x107000000 ◂— 0x0
──────────────────────────────────────────────────────────────[ BACKTRACE ]───────────────────────────────────────────────────────────────
 ► f 0     7ffff6b5cba0 stbi.parse_zlib+1584
   f 1     7ffff6b5cba0 stbi.parse_zlib+1584
   f 2     7ffff6b5cba0 stbi.parse_zlib+1584
   f 3     7ffff6ba2253 stbi_zlib_decode_malloc_guesssize_headerflag+307
   f 4     7ffff6ba2253 stbi_zlib_decode_malloc_guesssize_headerflag+307
   f 5     7ffff6ba43ee stbi.parse_png_file+7966
   f 6     7ffff6bab1dc stbi.load_main+4044
   f 7     7ffff6bab1dc stbi.load_main+4044
   f 8     7ffff6bab1dc stbi.load_main+4044
   f 9     7ffff6bc9f08 stbi.load_and_postprocess_8bit+296
   f 10     7ffff6bcac2a stbi_load_from_file+442
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Program received signal SIGINT

The call stack is shown below:

>bt
#0  stbi__zexpand (n=1, zout=0x7fffae5fb800 "", z=0x7fffffff7fa0) at /root/--/libcaesium/caesium/vendor/stb_image.h:3905
#1  stbi__parse_huffman_block (a=0x7fffffff7fa0) at /root/--/libcaesium/caesium/vendor/stb_image.h:3937
#2  stbi__parse_zlib (a=a@entry=0x7fffffff7fa0, parse_header=parse_header@entry=1) at /root/--/libcaesium/caesium/vendor/stb_image.h:4113
#3  0x00007ffff6ba2253 in stbi__do_zlib (parse_header=1, exp=1, olen=<optimized out>, obuf=<optimized out>, a=0x7fffffff7fa0) at /root/--/libcaesium/caesium/vendor/stb_image.h:4126
#4  stbi_zlib_decode_malloc_guesssize_headerflag (buffer=<optimized out>, len=len@entry=103, initial_size=<optimized out>, outlen=outlen@entry=0x7fffffff9140, parse_header=parse_header@entry=1) at /root/--/libcaesium/caesium/vendor/stb_image.h:4157
#5  0x00007ffff6ba43ee in stbi__parse_png_file (z=z@entry=0x7fffffff98b0, scan=scan@entry=0, req_comp=req_comp@entry=0) at /root/--/libcaesium/caesium/vendor/stb_image.h:4798
#6  0x00007ffff6bab1dc in stbi__do_png (ri=<optimized out>, req_comp=0, n=<optimized out>, y=0x7fffffff9df0, x=0x7fffffff9db0, p=0x7fffffff98b0) at /root/--/libcaesium/caesium/vendor/stb_image.h:4856
#7  stbi__png_load (ri=<optimized out>, req_comp=0, comp=<optimized out>, y=0x7fffffff9df0, x=0x7fffffff9db0, s=0x7fffffff9c00) at /root/--/libcaesium/caesium/vendor/stb_image.h:4886
#8  stbi__load_main (s=0x7fffffff9c00, x=<optimized out>, y=<optimized out>, comp=<optimized out>, req_comp=<optimized out>, ri=<optimized out>, bpc=8) at /root/--/libcaesium/caesium/vendor/stb_image.h:967
#9  0x00007ffff6bc9f08 in stbi__load_and_postprocess_8bit (s=<optimized out>, x=0x7fffffff9db0, y=0x7fffffff9df0, comp=0x7fffffff9e30, req_comp=0) at /root/--/libcaesium/caesium/vendor/stb_image.h:1060
#10 0x00007ffff6bcac2a in stbi_load_from_file (f=f@entry=0x61600000f680, x=x@entry=0x7fffffff9db0, y=y@entry=0x7fffffff9df0, comp=comp@entry=0x7fffffff9e30, req_comp=req_comp@entry=0) at /root/--/libcaesium/caesium/vendor/stb_image.h:1146
#11 0x00007ffff6bcadb4 in stbi_load (filename=filename@entry=0x60200000efd0 "hang", x=x@entry=0x7fffffff9db0, y=y@entry=0x7fffffff9df0, comp=comp@entry=0x7fffffff9e30, req_comp=req_comp@entry=0) at /root/--/libcaesium/caesium/vendor/stb_image.h:1136
#12 0x00007ffff6be6bae in cs_png_resize (input=input@entry=0x60200000efd0 "hang", output=output@entry=0x60400000dfd0 "/root/--/caesium-clt/out/hang", factor=<optimized out>) at /root/--/libcaesium/caesium/png.c:93
#13 0x00007ffff6be7460 in cs_png_optimize (input=input@entry=0x60200000efd0 "hang", output=output@entry=0x60400000dfd0 "/root/--/caesium-clt/out/hang", options=options@entry=0x7fffffffc238) at /root/--/libcaesium/caesium/png.c:24
#14 0x00007ffff6b1957f in cs_compress (input_path=0x60200000efd0 "hang", output_path=output_path@entry=0x60400000dfd0 "/root/--/caesium-clt/out/hang", options=options@entry=0x7fffffffc210, err_n=err_n@entry=0x7fffffffa134) at /root/--/libcaesium/caesium/caesium.c:39
#15 0x0000000000409f57 in start_compression (options=options@entry=0x7fffffffc260, parameters=parameters@entry=0x7fffffffc210) at /root/--/caesium-clt/src/helper.c:310
#16 0x0000000000401de3 in main (argc=argc@entry=8, argv=argv@entry=0x7fffffffe388) at /root/--/caesium-clt/src/main.c:45
#17 0x00007ffff6457830 in __libc_start_main (main=0x401c60 <main>, argc=8, argv=0x7fffffffe388, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe378) at ../csu/libc-start.c:291
#18 0x0000000000402099 in _start ()

I hope this helps you.

malloc.c:2372: sysmalloc: Assertion

I tried to compress a whole folder and get this info all the time.

malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.

My command: caesiumclt -l -o ./thumb/ -R ./thumb/*.jpg

How can I help this project out?

I'm not a coder (I can barely manipulate other's python scripts), but I would like to see this project succeed. It does what I want it to do pretty well (when it works) and there's no additional frills attached. How can I test things? Should I be printing the exif data of files that crash the program? How can I determine the root of an issue without knowing the language/how to code? I'm on Windows btw.

Not able to install caesiumCLT in Ubuntu 14.04 Machine

Hi,

I am trying to install Caesium in my UBUNTU 14.04 machine. I am getting below errors while installing

Process Followed:
installed "libjpeg-turbo8-dev" before installing CLI Tool

Here is the error output:
root@ip-172-31-7-149:/home/ubuntu/CaesiumCLT# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... no
checking whether make supports nested variables... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... none
checking dependency style of gcc... none
checking for in -ljpeg... no
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking getopt.h usability... yes
checking getopt.h presence... yes
checking for getopt.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking sys/stats.h usability... no
checking sys/stats.h presence... no
checking for sys/stats.h... no
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking jpeglib.h usability... yes
checking jpeglib.h presence... yes
checking for jpeglib.h... yes
checking for off_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for mkdir... yes
checking for strrchr... yes
checking for strtol... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: executing depfiles commands
root@ip-172-31-7-149:/home/ubuntu/CaesiumCLT# make
The program 'make' is currently not installed. You can install it by typing:
apt-get install make
root@ip-172-31-7-149:/home/ubuntu/CaesiumCLT# apt-get install make
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
make-doc
The following NEW packages will be installed:
make
0 upgraded, 1 newly installed, 0 to remove and 123 not upgraded.
Need to get 119 kB of archives.
After this operation, 328 kB of additional disk space will be used.
Get:1 http://ap-southeast-1.ec2.archive.ubuntu.com/ubuntu/ trusty/main make amd64 3.81-8.2ubuntu3 [119 kB]
Fetched 119 kB in 0s (6,932 kB/s)
Selecting previously unselected package make.
(Reading database ... 56741 files and directories currently installed.)
Preparing to unpack .../make_3.81-8.2ubuntu3_amd64.deb ...
Unpacking make (3.81-8.2ubuntu3) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up make (3.81-8.2ubuntu3) ...
root@ip-172-31-7-149:/home/ubuntu/CaesiumCLT#
root@ip-172-31-7-149:/home/ubuntu/CaesiumCLT# make
Making all in src
make[1]: Entering directory /home/ubuntu/CaesiumCLT/src' source='main.c' object='caesiumclt-main.o' libtool=no \ DEPDIR=.deps depmode=none /bin/bash ../tools/depcomp \ gcc -DPACKAGE_NAME=\"caesiumclt\" -DPACKAGE_TARNAME=\"caesiumclt\" -DPACKAGE_VERSION=\"1.9.9\" -DPACKAGE_STRING=\"caesiumclt\ 1.9.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"caesiumclt\" -DVERSION=\"1.9.9\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_GETOPT_H=1 -DHAVE_STDIO_H=1 -DHAVE_DIRENT_H=1 -DHAVE_JPEGLIB_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_MKDIR=1 -DHAVE_STRRCHR=1 -DHAVE_STRTOL=1 -I. -Wall -D_FILE_OFFSET_BITS=64 -ljpeg -lturbojpeg -lm -std=c99 -g -O2 -c -o caesiumclt-main.otest -f 'main.c' || echo './'main.c source='utils.c' object='caesiumclt-utils.o' libtool=no \ DEPDIR=.deps depmode=none /bin/bash ../tools/depcomp \ gcc -DPACKAGE_NAME=\"caesiumclt\" -DPACKAGE_TARNAME=\"caesiumclt\" -DPACKAGE_VERSION=\"1.9.9\" -DPACKAGE_STRING=\"caesiumclt\ 1.9.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"caesiumclt\" -DVERSION=\"1.9.9\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_GETOPT_H=1 -DHAVE_STDIO_H=1 -DHAVE_DIRENT_H=1 -DHAVE_JPEGLIB_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_MKDIR=1 -DHAVE_STRRCHR=1 -DHAVE_STRTOL=1 -I. -Wall -D_FILE_OFFSET_BITS=64 -ljpeg -lturbojpeg -lm -std=c99 -g -O2 -c -o caesiumclt-utils.otest -f 'utils.c' || echo './'utils.c utils.c: In function ‘scan_folder’: utils.c:234:5: warning: implicit declaration of function ‘chdir’ [-Wimplicit-function-declaration] chdir(dir); ^ utils.c:236:9: warning: implicit declaration of function ‘lstat’ [-Wimplicit-function-declaration] lstat(entry->d_name, &statbuf); ^ utils.c:258:5: warning: return from incompatible pointer type [enabled by default] return *files; ^ source='lossless.c' object='caesiumclt-lossless.o' libtool=no \ DEPDIR=.deps depmode=none /bin/bash ../tools/depcomp \ gcc -DPACKAGE_NAME=\"caesiumclt\" -DPACKAGE_TARNAME=\"caesiumclt\" -DPACKAGE_VERSION=\"1.9.9\" -DPACKAGE_STRING=\"caesiumclt\ 1.9.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"caesiumclt\" -DVERSION=\"1.9.9\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_GETOPT_H=1 -DHAVE_STDIO_H=1 -DHAVE_DIRENT_H=1 -DHAVE_JPEGLIB_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_MKDIR=1 -DHAVE_STRRCHR=1 -DHAVE_STRTOL=1 -I. -Wall -D_FILE_OFFSET_BITS=64 -ljpeg -lturbojpeg -lm -std=c99 -g -O2 -c -o caesiumclt-lossless.otest -f 'lossless.c' || echo './'lossless.c source='compress.c' object='caesiumclt-compress.o' libtool=no \ DEPDIR=.deps depmode=none /bin/bash ../tools/depcomp \ gcc -DPACKAGE_NAME=\"caesiumclt\" -DPACKAGE_TARNAME=\"caesiumclt\" -DPACKAGE_VERSION=\"1.9.9\" -DPACKAGE_STRING=\"caesiumclt\ 1.9.9\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"caesiumclt\" -DVERSION=\"1.9.9\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_GETOPT_H=1 -DHAVE_STDIO_H=1 -DHAVE_DIRENT_H=1 -DHAVE_JPEGLIB_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_MKDIR=1 -DHAVE_STRRCHR=1 -DHAVE_STRTOL=1 -I. -Wall -D_FILE_OFFSET_BITS=64 -ljpeg -lturbojpeg -lm -std=c99 -g -O2 -c -o caesiumclt-compress.otest -f 'compress.c' || echo './'compress.c compress.c: In function ‘cclt_compress’: compress.c:17:6: warning: variable ‘status’ set but not used [-Wunused-but-set-variable] int status; ^ compress.c: In function ‘cclt_decompress’: compress.c:58:9: warning: variable ‘res’ set but not used [-Wunused-but-set-variable] int res = 0; ^ gcc -Wall -D_FILE_OFFSET_BITS=64 -ljpeg -lturbojpeg -lm -std=c99 -g -O2 -o caesiumclt caesiumclt-main.o caesiumclt-utils.o caesiumclt-lossless.o caesiumclt-compress.o caesiumclt-utils.o: In functionjcopy_markers_execute':
/home/ubuntu/CaesiumCLT/src/utils.c:145: undefined reference to jpeg_write_marker' caesiumclt-lossless.o: In functioncclt_get_markers':
/home/ubuntu/CaesiumCLT/src/lossless.c:15: undefined reference to jpeg_std_error' /home/ubuntu/CaesiumCLT/src/lossless.c:17: undefined reference tojpeg_CreateDecompress'
/home/ubuntu/CaesiumCLT/src/lossless.c:30: undefined reference to jpeg_stdio_src' /home/ubuntu/CaesiumCLT/src/lossless.c:34: undefined reference tojpeg_save_markers'
/home/ubuntu/CaesiumCLT/src/lossless.c:37: undefined reference to jpeg_read_header' caesiumclt-lossless.o: In functioncclt_optimize':
/home/ubuntu/CaesiumCLT/src/lossless.c:60: undefined reference to jpeg_std_error' /home/ubuntu/CaesiumCLT/src/lossless.c:61: undefined reference tojpeg_CreateDecompress'
/home/ubuntu/CaesiumCLT/src/lossless.c:62: undefined reference to jpeg_std_error' /home/ubuntu/CaesiumCLT/src/lossless.c:63: undefined reference tojpeg_CreateCompress'
/home/ubuntu/CaesiumCLT/src/lossless.c:76: undefined reference to jpeg_stdio_src' /home/ubuntu/CaesiumCLT/src/lossless.c:86: undefined reference tojpeg_read_header'
/home/ubuntu/CaesiumCLT/src/lossless.c:89: undefined reference to jpeg_read_coefficients' /home/ubuntu/CaesiumCLT/src/lossless.c:93: undefined reference tojpeg_copy_critical_parameters'
/home/ubuntu/CaesiumCLT/src/lossless.c:113: undefined reference to jpeg_simple_progression' /home/ubuntu/CaesiumCLT/src/lossless.c:116: undefined reference tojpeg_stdio_dest'
/home/ubuntu/CaesiumCLT/src/lossless.c:119: undefined reference to jpeg_write_coefficients' /home/ubuntu/CaesiumCLT/src/lossless.c:134: undefined reference tojpeg_finish_compress'
/home/ubuntu/CaesiumCLT/src/lossless.c:135: undefined reference to jpeg_destroy_compress' /home/ubuntu/CaesiumCLT/src/lossless.c:136: undefined reference tojpeg_finish_decompress'
/home/ubuntu/CaesiumCLT/src/lossless.c:137: undefined reference to jpeg_destroy_decompress' /home/ubuntu/CaesiumCLT/src/lossless.c:81: undefined reference tojpeg_save_markers'
/home/ubuntu/CaesiumCLT/src/lossless.c:129: undefined reference to jpeg_destroy_decompress' caesiumclt-compress.o: In functioncclt_compress':
/home/ubuntu/CaesiumCLT/src/compress.c:30: undefined reference to tjInitCompress' /home/ubuntu/CaesiumCLT/src/compress.c:32: undefined reference totjCompress2'
/home/ubuntu/CaesiumCLT/src/compress.c:48: undefined reference to tjDestroy' /home/ubuntu/CaesiumCLT/src/compress.c:49: undefined reference totjFree'
caesiumclt-compress.o: In function cclt_decompress': /home/ubuntu/CaesiumCLT/src/compress.c:67: undefined reference totjAlloc'
/home/ubuntu/CaesiumCLT/src/compress.c:71: undefined reference to tjInitDecompress' /home/ubuntu/CaesiumCLT/src/compress.c:72: undefined reference totjDecompressHeader2'
/home/ubuntu/CaesiumCLT/src/compress.c:74: undefined reference to ceil' /home/ubuntu/CaesiumCLT/src/compress.c:75: undefined reference toceil'
/home/ubuntu/CaesiumCLT/src/compress.c:82: undefined reference to tjAlloc' /home/ubuntu/CaesiumCLT/src/compress.c:84: undefined reference totjDecompress2'
/home/ubuntu/CaesiumCLT/src/compress.c:94: undefined reference to tjDestroy' collect2: error: ld returned 1 exit status make[1]: *** [caesiumclt] Error 1 make[1]: Leaving directory/home/ubuntu/CaesiumCLT/src'
make: *** [all-recursive] Error 1
root@ip-172-31-7-149:/home/ubuntu/CaesiumCLT# make install
Making install in src
make[1]: Entering directory /home/ubuntu/CaesiumCLT/src' gcc -Wall -D_FILE_OFFSET_BITS=64 -ljpeg -lturbojpeg -lm -std=c99 -g -O2 -o caesiumclt caesiumclt-main.o caesiumclt-utils.o caesiumclt-lossless.o caesiumclt-compress.o caesiumclt-utils.o: In functionjcopy_markers_execute':
/home/ubuntu/CaesiumCLT/src/utils.c:145: undefined reference to jpeg_write_marker' caesiumclt-lossless.o: In functioncclt_get_markers':
/home/ubuntu/CaesiumCLT/src/lossless.c:15: undefined reference to jpeg_std_error' /home/ubuntu/CaesiumCLT/src/lossless.c:17: undefined reference tojpeg_CreateDecompress'
/home/ubuntu/CaesiumCLT/src/lossless.c:30: undefined reference to jpeg_stdio_src' /home/ubuntu/CaesiumCLT/src/lossless.c:34: undefined reference tojpeg_save_markers'
/home/ubuntu/CaesiumCLT/src/lossless.c:37: undefined reference to jpeg_read_header' caesiumclt-lossless.o: In functioncclt_optimize':
/home/ubuntu/CaesiumCLT/src/lossless.c:60: undefined reference to jpeg_std_error' /home/ubuntu/CaesiumCLT/src/lossless.c:61: undefined reference tojpeg_CreateDecompress'
/home/ubuntu/CaesiumCLT/src/lossless.c:62: undefined reference to jpeg_std_error' /home/ubuntu/CaesiumCLT/src/lossless.c:63: undefined reference tojpeg_CreateCompress'
/home/ubuntu/CaesiumCLT/src/lossless.c:76: undefined reference to jpeg_stdio_src' /home/ubuntu/CaesiumCLT/src/lossless.c:86: undefined reference tojpeg_read_header'
/home/ubuntu/CaesiumCLT/src/lossless.c:89: undefined reference to jpeg_read_coefficients' /home/ubuntu/CaesiumCLT/src/lossless.c:93: undefined reference tojpeg_copy_critical_parameters'
/home/ubuntu/CaesiumCLT/src/lossless.c:113: undefined reference to jpeg_simple_progression' /home/ubuntu/CaesiumCLT/src/lossless.c:116: undefined reference tojpeg_stdio_dest'
/home/ubuntu/CaesiumCLT/src/lossless.c:119: undefined reference to jpeg_write_coefficients' /home/ubuntu/CaesiumCLT/src/lossless.c:134: undefined reference tojpeg_finish_compress'
/home/ubuntu/CaesiumCLT/src/lossless.c:135: undefined reference to jpeg_destroy_compress' /home/ubuntu/CaesiumCLT/src/lossless.c:136: undefined reference tojpeg_finish_decompress'
/home/ubuntu/CaesiumCLT/src/lossless.c:137: undefined reference to jpeg_destroy_decompress' /home/ubuntu/CaesiumCLT/src/lossless.c:81: undefined reference tojpeg_save_markers'
/home/ubuntu/CaesiumCLT/src/lossless.c:129: undefined reference to jpeg_destroy_decompress' caesiumclt-compress.o: In functioncclt_compress':
/home/ubuntu/CaesiumCLT/src/compress.c:30: undefined reference to tjInitCompress' /home/ubuntu/CaesiumCLT/src/compress.c:32: undefined reference totjCompress2'
/home/ubuntu/CaesiumCLT/src/compress.c:48: undefined reference to tjDestroy' /home/ubuntu/CaesiumCLT/src/compress.c:49: undefined reference totjFree'
caesiumclt-compress.o: In function cclt_decompress': /home/ubuntu/CaesiumCLT/src/compress.c:67: undefined reference totjAlloc'
/home/ubuntu/CaesiumCLT/src/compress.c:71: undefined reference to tjInitDecompress' /home/ubuntu/CaesiumCLT/src/compress.c:72: undefined reference totjDecompressHeader2'
/home/ubuntu/CaesiumCLT/src/compress.c:74: undefined reference to ceil' /home/ubuntu/CaesiumCLT/src/compress.c:75: undefined reference toceil'
/home/ubuntu/CaesiumCLT/src/compress.c:82: undefined reference to tjAlloc' /home/ubuntu/CaesiumCLT/src/compress.c:84: undefined reference totjDecompress2'
/home/ubuntu/CaesiumCLT/src/compress.c:94: undefined reference to tjDestroy' collect2: error: ld returned 1 exit status make[1]: *** [caesiumclt] Error 1 make[1]: Leaving directory/home/ubuntu/CaesiumCLT/src'
make: *** [install-recursive] Error 1
root@ip-172-31-7-149:/home/ubuntu/CaesiumCLT# whereis caesiumclt
caesiumclt:

Build fails under mingw

c:\Users\Admin\Documents\caesium\caesium-clt\build>cmake .. -G "MinGW Makefiles"
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Check for working C compiler: C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe
-- Check for working C compiler: C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe
-- Check for working CXX compiler: C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Admin/Documents/caesium/caesium-clt/build

c:\Users\Admin\Documents\caesium\caesium-clt\build>mingw32-make
Scanning dependencies of target caesiumclt
[ 14%] Building C object src/CMakeFiles/caesiumclt.dir/vendor/optparse.c.obj
[ 28%] Building C object src/CMakeFiles/caesiumclt.dir/error.c.obj
[ 42%] Building C object src/CMakeFiles/caesiumclt.dir/helper.c.obj
C:\Users\Admin\Documents\caesium\caesium-clt\src\helper.c: In function
parse_arguments':
C:\Users\Admin\Documents\caesium\caesium-clt\src\helper.c:72:55: error: 'MAX_PATH' undeclared (first use in this function); did you mean 'MAX_PATH_SIZE'?
_fullpath(parameters.output_folder, opts.optarg, MAX_PATH);
^~~~~~~~
MAX_PATH_SIZE
C:\Users\Admin\Documents\caesium\caesium-clt\src\helper.c:72:55: note: each undeclared identifier is reported only once for each function it appears in
C:\Users\Admin\Documents\caesium\caesium-clt\src\helper.c: At top level:cc1.exe: warning: unrecognized command line option '-Wno-nullability-completeness'
mingw32-make[2]: *** [src\CMakeFiles\caesiumclt.dir\build.make:91: src/CMakeFiles/caesiumclt.dir/helper.c.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:93: src/CMakeFiles/caesiumclt.dir/all] Error 2
mingw32-make: *** [Makefile:129: all] Error 2

c:\Users\Admin\Documents\caesium\caesium-clt\build>

Convert images to the specified format

If input is a jpg image, program will output a compressed jpg image.
Could caesium-clt provide a argument to compress the input image to specified format?

ERROR 203: Unrecognized error.

I have several Debian 8 & 9 servers that were running version 0.10.2 (timestamps say Nov 21 is when I downloaded and installed it).
After updating to the latest code (version 0.11.0), I get the error 203. I've tried several different images, with this command:
/opt/caesium/caesiumclt -q 80 -o /tmp/caesium /home/me/jpeg-9c/testorig.jpg
That particular test image is part of this package: http://www.ijg.org/files/jpegsrc.v9c.tar.gz
Altering the output folder does not seem to help, omitting it says "cannot create output folder", which is probably expected.
Dropping the quality to 0 (lossless) or removing that parameter results in this, which might be the first clue:
Wrong JPEG library version: library is 90, caller expects 62

I did recently update libjpeg on these machines from 9b to 9c, but so far as I can tell, Caesium is configured to use it's own mozjpeg compiled in the libcaesium folder, and I do also have mozjpeg installed in /opt/mozjpeg/ (but that was not updated recently).

Release binaries

Would you please release binaries inclduing for arm64 because I'd like to use this on Termux on Android.

Bulk Image Processing using find

I am trying to install it on servers to process 100Gb+ of images on recurring basis. With Jpegoptim i have used -

find /web/html/skin/ -name '*.jpg' | xargs jpegoptim --strip-all --all-progressive

When i am using the same with

find /web/html/skin/ -name '*.jpg' | xargs -0 caesiumclt -q 90 -o /web/html/skin/

Its not able to take the parameters. Error coming -
xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option
[ERROR] 6: Cannot check if is a directory.

Any way to process in bulk using find? Let me know what i am doing wrong here?

Ubuntu 14.04 installation problem.

I am trying to install in ubuntu 14.04. I successfully installed zopfli but I don't know why but still I am getting this error Cannot find libzopflipng.

CMYK images combined with -q option cause corrupted output

When using -q 80 for example with a cmyk image it causes the result to be an empty black image.

/caesium # caesiumclt -q80 -o out cmyk.jpg 
(1/1) cmyk.jpg -> out/cmyk.jpg
1.17 MB -> 2.70 KB [-99.77%]
-------------------------------
Compression completed in 0m0s170ms
1.17 MB -> 2.70 KB [-99.77% | -1.17 MB]

Original:
cmyk

Optimized:
cmyk

Add .tiff .tif to supported Formats

Using an older version of Caesium on Windows, I can compress images in .tiff or .tif format.
But in the newer version it doesn't work.
I can edit the
src\models\CImage.h

class CImage {
      const QList<QByteArray> supported formats = { "png", "jpg", "jpeg", "webp" };

adding "tiff", "tif"

But it would be great if they added it in a new version.

Error: Output file write error --- out of disk space?

caesiumclt -q 0 -RS -o "\\mynetworkstrg\IAmRoot2\=2_NEED_RENAMED" "\\mynetworkstrg\IAmRoot2\unsorted\manga2bp\=1_NEED_CRUSHED"
Collecting files...
(1/33744) 001.jpg -> \\mynetworkstrg\IAmRoot2\=2_NEED_RENAMED\Ase to Sekken by Yamada Kintetsu\0007 - Vol. 001 Ch. 007 - Tears\001.jpg
Compressing...Output file write error --- out of disk space?

This is being done to files on my network storage device, which has approximately 5 TB of space left. The files in question total approximately 25.5 GB.

The dry run presented no issues.

I am using the latest Windows binary (v0.15.1-beta) on a Win10 computer.

[ERROR] 203: Unrecognized error. after 1021 images

Just installed Caesium on Ubuntu 19.04 running on a server. It performs fantastically, but crashes after 1021 images no matter which images it is given with error 203. Unrecognized error.

I used the following command caesiumclt -q 30 -o ~/compressimages/ /home/MasterImages

The code seems to process images non-sequentially, so I can't simply point it to the remaining images in an efficient way.

This issue appears different to #27

Has anyone encountered anything similar?

Caesium-clt installs fine but gives "command not found"

stuff@stuff-VirtualBox:~$ cd /home/stuff/Downloads/caesium-clt-0.10.2-beta

stuff@stuff-VirtualBox:~/Downloads/caesium-clt-0.10.2-beta$ mkdir build && cd build

stuff@stuff-VirtualBox:~/Downloads/caesium-clt-0.10.2-beta/build$ cmake ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/stuff/Downloads/caesium-clt-0.10.2-beta/build

stuff@stuff-VirtualBox:/Downloads/caesium-clt-0.10.2-beta/build$ make
Scanning dependencies of target caesiumclt
[ 16%] Building C object src/CMakeFiles/caesiumclt.dir/helper.c.o
[ 33%] Building C object src/CMakeFiles/caesiumclt.dir/error.c.o
[ 50%] Building C object src/CMakeFiles/caesiumclt.dir/optparse.c.o
[ 66%] Building C object src/CMakeFiles/caesiumclt.dir/main.c.o
[ 83%] Building C object src/CMakeFiles/caesiumclt.dir/utils.c.o
[100%] Linking C executable caesiumclt
[100%] Built target caesiumclt

stuff@stuff-VirtualBox:/Downloads/caesium-clt-0.10.2-beta/build$ sudo make install
[sudo] password for stuff:
[100%] Built target caesiumclt
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/caesiumclt

stuff@stuff-VirtualBox:/Downloads/caesium-clt-0.10.2-beta/build$ caesiumclt -v
0.10.2

stuff@stuff-VirtualBox:/Downloads/caesium-clt-0.10.2-beta/build$ caesium
caesium: command not found

Any idea?

Provide a way to tell the user that compression might take a long time

I tested caesum-clt with a 14mb heavy png photo, the terminal cursor scrolled down to a next line, therefore caesium-clt was working as expected. However a blank space with a stuck cursor for 6 minutes didn't help me to understand what was going on.

I propose two ideas which could be implemented:

  1. Shows a status bar displaying how much is left to wait or alternatively display the % as "file photo.png is being compressed 40%"

  2. detect the size of the input file and if over a certain amount (5?10mb?) display a warning message like: warning the file is heavy, compression might take a long time"

I am not able to install CaesiumCLT in my ubuntu system

Hi Team,

Can you please help to install caesium in linux (ubuntu) machine.

  1. git clone from CaesiumCLT to my system.
  2. cd CaesiumCLT
  3. I followed "INSTALL" file for install in my system
  4. Installed "# sudo apt-get install libjpeg-turbo-progs"
  5. ./configure

Output:

./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for  in -ljpeg... no
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking getopt.h usability... yes
checking getopt.h presence... yes
checking for getopt.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking sys/stats.h usability... no
checking sys/stats.h presence... no
checking for sys/stats.h... no
checking dirent.h usability... yes
checking dirent.h presence... yes
checking for dirent.h... yes
checking jpeglib.h usability... no
checking jpeglib.h presence... no
checking for jpeglib.h... no
Cannot find jpeglib.h.

6. # make
make: *** No targets specified and no makefile found.  Stop.

I am root in this process.

Cloud you please help me to fix this problem.

Thanks,
Satya

Char is removed from start of output directory

say you have files under /home/ubuntu/imagetests/unoptimized/
and you want to output files to /home/ubuntu/imagetests/optimized/

/home/ubuntu/imagetests/unoptimized/Ch1/image1.jpg becomes /home/ubuntu/imagetests/optimized/h1/image1.jpg

/home/ubuntu/imagetests/unoptimized/Ch1/image2.jpg becomes /home/ubuntu/imagetests/optimized/h1/image2.jpg
ext.
included is a modified helper.c file that fixes the problem
helper.zip

caesiumclt.exe -R --overwrite deletes any non-image file

Using
caesiumclt.exe -R --overwrite all
or
caesiumclt.exe -R --overwrite bigger

Any non-image file, which in fact throws an error, is nuked. This is a non-desired behavior and really dangerous, specially since you allow recursion.

Either allow a mask input to filter files to process (which should default to compatible images) or just process only compatible images.

detected memory leaks

hi, i found something interesting in this repo.

crash sample

detected memory leaks.zip

command to reproduce

./caesiumclt -q 80 -e -S -o /dev/null crash_sample

crash info

==71957==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x44c980 in strdup /home/bupt/Desktop/tools/llvm-12.0.1/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cpp:437
    #1 0x501209 in get_filename /home/bupt/Desktop/caesium-clt/src/utils.c:182:14
    #2 0x4fdd7b in start_compression /home/bupt/Desktop/caesium-clt/src/helper.c:240:26
    #3 0x4fee98 in main /home/bupt/Desktop/caesium-clt/src/main.c:51:2
    #4 0x7fb3203d7c86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:310

Direct leak of 24 byte(s) in 1 object(s) allocated from:
    #0 0x4af350 in malloc /home/bupt/Desktop/tools/llvm-12.0.1/llvm/projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:145
    #1 0x4fd267 in parse_arguments /home/bupt/Desktop/caesium-clt/src/helper.c:196:62
    #2 0x4fee27 in main /home/bupt/Desktop/caesium-clt/src/main.c:46:12
    #3 0x7fb3203d7c86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:310

Direct leak of 18 byte(s) in 1 object(s) allocated from:
    #0 0x4af6e8 in realloc /home/bupt/Desktop/tools/llvm-12.0.1/llvm/projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:164
    #1 0x7fb321608d2f in alloc::alloc::realloc::hc736fd5de89fa3ef /build/rustc-0m8Yd4/rustc-1.59.0+dfsg1~ubuntu1~llvm/library/alloc/src/alloc.rs:124:14
    #2 0x7fb321608d2f in alloc::alloc::Global::grow_impl::hf0049006e7ebdb0d /build/rustc-0m8Yd4/rustc-1.59.0+dfsg1~ubuntu1~llvm/library/alloc/src/alloc.rs:201:31
    #3 0x7fb321608d2f in _$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$::grow::hb9fcdcf97d0e846b /build/rustc-0m8Yd4/rustc-1.59.0+dfsg1~ubuntu1~llvm/library/alloc/src/alloc.rs:254:18
    #4 0x7fb321608d2f in alloc::raw_vec::finish_grow::hd9007cf6faf1aed9 (.llvm.9900164880652801993) /build/rustc-0m8Yd4/rustc-1.59.0+dfsg1~ubuntu1~llvm/library/alloc/src/raw_vec.rs:466:13

SUMMARY: AddressSanitizer: 66 byte(s) leaked in 3 allocation(s).

Create a plug-in for GIMP

With this plugin you can create an user interface to help users run caesium-clt, and caesium-clt would be alowed to receive image source directly from GIMP for operating.

Feature Request: Additional Options for specifying output width / height

Hi,

I'm using caesiumclt to compress my image library, and it works great so far.

But since my phone camera (and I guess nowadays most phones do) takes really large pictures (~5000x3000 resolution) I'd like to reduce this a little bit as well.

Currently, It is possible to specify something like --width 3000 and the height will be kept in the same aspect ratio, which works great for landscape photos, but not on portrait photos.

So an option to specify either the width or the height (chosen by the larger dimension) would be awesome, or maybe something like:
--max-width 3000 --max-height 3000 could work to achieve this?

Also, in my library I also have some older photos which are at a lower resolution and which I then don't want to upscale to a 3000 pixel width. Would it be possible to add something like a --no-upscaling flag or so as well? Or if the --max-width / --max-height parameter from above were to be included it could become unnecessary I guess, that would be great as well.

My current workflow, which works but is basically a hack around this limitation just divides my library first into three separate folders:

  • landscape
  • portrait
  • small photos that won't be resized

I then run caesiumclt on each of those, and afterwards combine the results again. But some more options like those specified above would make that workaround unnecessary.

Anyway thanks for an awesome tool and would love to hear additional thoughts on the feature ideas I described 😄

Compilation errors and exceptions

My env:

Microsoft Windows 10 Build 19043
cmake version 3.23.0
mingw32-make.exe --version  -> GNU Make 4.3
gcc/g++ (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 12.2.0

Step:

cd ./libcaesium/
cargo build --release
cd ../caesium-clt
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DLIBCAESIUM_PATH=C:/XXXX/libcaesium/target/release -G "CodeBlocks - MinGW Makefiles"
cmake --build . --target caesiumclt

ERROR 1:

\src\helper.h:38:5: error: unknown type name 'bool'
   38 |     bool keep_metadata;

I Fix this error with #include <stdbool.h> Whether Windows or Linux.

ERROR 2:

helper.c:81:70: error: 'MAX_PATH' undeclared (first use in this function); did you mean 'MAX_PATH_SIZE'?
   81 |                     _fullpath(parameters.output_folder, opts.optarg, MAX_PATH);

I Fix this error with this replace MAX_PATH to MAX_PATH_SIZE.

ERROR 3:

src\error.h:23:5: error: expected identifier before numeric constant
   23 |     ERROR = 0,

I Fix this error with undef ERROR.

PR is : #54

finally , I successfully completed the compilation , get caesiumclt.exe and caesium.dll, i put them in C:\caesiumclt ,and add the floder to PATH , i can use caesiumclt.exe command now.

BUT another big problem is caesiumclt always return nothing as output, whatever image i give whatever quality parameter i set.
eg:

# ls .\in\1.png
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2022/11/4     15:50         249039 1.png


# caesiumclt.exe -q 80 -o ./out ./in/1.png
Collecting files...
(1/1) ./in/1.png -> C:\Users\ubuntu\Desktop\test\input\out\./in/1.png
Compressing...[WARNING] 7: Cannot calculate file size
243.20 KB -> 0.00 B [-100.00%]
-------------------------------
Compression completed in 0m0s2ms
243.20 KB -> 0.00 B [-100.00% | -243.20 KB]

# ls .\out\              //output nothing

need your help @Lymphatus

Cannot run "caesiumclt -v" due to missing library

Hello,

i have a question for you. When i run caesiumclt -v from Terminal it says:

pi@raspberry:~ $ caesiumclt -v caesiumclt: error while loading shared libraries: libcaesium.so: cannot open shared object file: No such file or directory

I have already compiled and installed the libcaesium library on my system. It is located at:

-- Installing: /usr/local/lib/libcaesium.so -- Set runtime path of "/usr/local/lib/libcaesium.so" to "/opt/mozjpeg/lib"

The question is:

  • Which should be the correct directory of this libcaesium.so missing library that the caesiumclt -v command looks for, once you launch it?

Thanks

More logs

We need more logs when compress failed. But there are no change when I set verbose to 9.

caesiumclt -e -S -R --width 3000 -O bigger -q 70 --threads 11 -o . .
# from help
caesiumclt -e -S -R --width 3000 -O bigger -q 70 --threads 11 --verbose 1 -o . .
# try like unix style
caesiumclt -e -S -R --width 3000 -O bigger -q 70 --threads 11 --verbose 9 -o . .

Running make command in local failing

make
[ 14%] Building C object src/CMakeFiles/caesiumclt.dir/vendor/optparse.c.o
[ 28%] Building C object src/CMakeFiles/caesiumclt.dir/error.c.o
[ 42%] Building C object src/CMakeFiles/caesiumclt.dir/helper.c.o
[ 57%] Building C object src/CMakeFiles/caesiumclt.dir/main.c.o
[ 71%] Building C object src/CMakeFiles/caesiumclt.dir/shared.c.o
[ 85%] Building C object src/CMakeFiles/caesiumclt.dir/utils.c.o
[100%] Linking C executable caesiumclt
ld: library not found for -lcaesium
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/caesiumclt] Error 1
make[1]: *** [src/CMakeFiles/caesiumclt.dir/all] Error 2
make: *** [all] Error 2
test:build test$ make -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0

I am trying to build it in monterey mac machine.

Doesn't manipulate the JPG file, which contains Chinese or special characters.

I'm not sure, but it seems that CaesiumCLT doesn't manipulate the JPG file, which contains Chinese or special characters. Thank you!

(1/1) /home/kashu/a/天津利顺德豪华精选酒店/me.jpg -> /home/kashu/a/天津利顺德豪华精选酒店_q90/me.jpg
caesiumclt: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.
(1/1) /home/kashu/a/天津利顺德豪华精选酒店/me (copy).jpg -> /home/kashu/a/天津利顺德豪华精选酒店
._q90/me (copy).jpg
(1/1) /home/kashu/a/北京出差/通行证件要求通知02.jpg -> /home/kashu/a/北京出差_q90/通行证件要求通知02.jpg
caesiumclt: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.
(1/1) /home/kashu/a/北京出差/通行证件要求通知01.jpg -> /home/kashu/a/北京出差_q90/通行证件要求通知01.jpg
caesiumclt: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.

Process fails after 9 images

Tested Systems: Win7x64, Win10

I had tested this on a small group of files and it worked beautifully, so I decided to go big (183 files):

Input

caesiumclt -q 0 -RS -o "C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed" "C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\tocompress"

Output

[WARNING] 3: Empty input folder.
(1/183) 000.jpg -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\000.jpg
1.48 MB -> 1.30 MB [-12.29%]
(2/183) 0000.png -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\0000.png
239.57 KB -> 177.59 KB [-25.87%]
(3/183) 001.jpg -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\001.jpg
2.03 MB -> 1.85 MB [-9.30%]
(4/183) 002.jpg -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\002.jpg
853.61 KB -> 709.89 KB [-16.84%]
(5/183) 003.jpg -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\003.jpg
40.46 KB -> 7.81 KB [-80.69%]
(6/183) 004.jpg -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\004.jpg
85.14 KB -> 47.87 KB [-43.77%]
(7/183) 005.jpg -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\005.jpg
69.26 KB -> 32.88 KB [-52.52%]
(8/183) 006.jpg -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\006.jpg
534.81 KB -> 491.10 KB [-8.17%]
(9/183) 007.png -> C:\Users\ME\Downloads\ComicMangaNovel\[APPROVED]\Joou to Shitateya by Scarlet Beriko\compressed\[Scarlet Beriko] Joou to Shitateya ch. 1 [Eng]\007.png

Then caesium-clt crashes. Every time on the 9th file. On Win 10, it just silently stops at file 9.

Could it be the length of the path name? - Maybe not, since I moved it closer to my user profile folder and it still crashed on file 9.

I used 2 computers, moved directories, made sure it wasn't my antivirus. Not sure what else to check. Also, what up with the [WARNING] 3: Empty input folder error?

Problems with Similar Folder Names for output and input folder

Hi,

I have noticed that when I input the Output Folder with a name that starts eactly as my input folder, the compression throws the error "[ERROR] 12: Cannot set output folder inside the input one
".
I have attached a screenshot showing just that
image

But once you change the name slightly, it all works fine

Certain Files Stop/Slow Down Compression Process

What is it about the 6 files in my provided zip file nextfilewillcrash.zip that stops the process or causes the process to hang? (On a local Win10 system, using the 0.15.2-beta)

Failure

PS C:\Users\ME> caesiumclt -q 0 -RS -o "C:\Users\ME\Downloads\manga_factory\tst-cc" "C:\Users\ME\Downloads\manga_factory\testo"
Collecting files...
(1/10) 001.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\001.jpg
776.47 KB -> 769.36 KB [-0.92%]
(2/10) 001.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\001.png
509.36 KB -> 310.91 KB [-38.96%]
(3/10) 002.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\002.jpg
1.26 MB -> 1.25 MB [-0.55%]
(4/10) 002.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\002.png
656.82 KB -> 406.01 KB [-38.19%]
(5/10) 003.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\003.jpg
104.67 KB -> 97.56 KB [-6.79%]
(6/10) 003.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\003.png
546.47 KB -> 328.09 KB [-39.96%]
(7/10) 004.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\004.jpg
821.05 KB -> 813.94 KB [-0.87%]
(8/10) 004.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\004.png
565.50 KB -> 350.47 KB [-38.02%]
(9/10) 037.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\037.png
906.00 B -> 906.00 B [0.00%]
(10/10) 218.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\218.png
Compressing...

==================> PROGRAM ENDS

Success, but hangs for a while (111.png is a problem file and is followed by a known working JPG)

PS C:\Users\ME> caesiumclt -q 0 -RS -o "C:\Users\ME\Downloads\manga_factory\tst-cc" "C:\Users\ME\Downloads\manga_factory\testo"
Collecting files...
(1/10) 001.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\001.jpg
776.47 KB -> 769.36 KB [-0.92%]
(2/10) 001.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\001.png
509.36 KB -> 310.91 KB [-38.96%]
(3/10) 002.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\002.jpg
1.26 MB -> 1.25 MB [-0.55%]
(4/10) 002.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\002.png
656.82 KB -> 406.01 KB [-38.19%]
(5/10) 003.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\003.jpg
104.67 KB -> 97.56 KB [-6.79%]
(6/10) 003.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\003.png
546.47 KB -> 328.09 KB [-39.96%]
(7/10) 004.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\004.jpg
821.05 KB -> 813.94 KB [-0.87%]
(8/10) 004.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\004.png
565.50 KB -> 350.47 KB [-38.02%]
(9/10) 111.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\111.png
906.00 B -> 906.00 B [0.00%]
(10/10) 112.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\112.jpg
821.05 KB -> 813.94 KB [-0.87%]
-------------------------------
Compression completed in 0m45s
5.94 MB -> 5.05 MB [-15.08% | -918.21 KB]

In order to get this successful process, I took one of the known working files in the same folder, copied and renamed it 112.jpg so that it would immediately be processed after 111.png. This causes the process to hang for a while. Without 111.png the process takes 15 sec. By adding in 111.png, it is lengthened to 45 sec.

Success, no hanging (no problem files)

PS C:\Users\ME> caesiumclt -q 0 -RS -o "C:\Users\ME\Downloads\manga_factory\tst-cc" "C:\Users\ME\Downloads\manga_factory\testo"
Collecting files...
(1/9) 001.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\001.jpg
776.47 KB -> 769.36 KB [-0.92%]
(2/9) 001.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\001.png
509.36 KB -> 310.91 KB [-38.96%]
(3/9) 002.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\002.jpg
1.26 MB -> 1.25 MB [-0.55%]
(4/9) 002.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\002.png
656.82 KB -> 406.01 KB [-38.19%]
(5/9) 003.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\003.jpg
104.67 KB -> 97.56 KB [-6.79%]
(6/9) 003.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\003.png
546.47 KB -> 328.09 KB [-39.96%]
(7/9) 004.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\004.jpg
821.05 KB -> 813.94 KB [-0.87%]
(8/9) 004.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\004.png
565.50 KB -> 350.47 KB [-38.02%]
(9/9) 112.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\112.jpg
821.05 KB -> 813.94 KB [-0.87%]
-------------------------------
Compression completed in 0m15s
5.94 MB -> 5.05 MB [-15.09% | -918.21 KB]

I also tried having a known working PNG follow the problem file. Again, the known working file is just a copy of one of the files in the same folder, renamed 112.png to follow after 111.png.

Failure (111.png is a problem file and is followed by a known working PNG)

PS C:\Users\ME> caesiumclt -q 0 -RS -o "C:\Users\ME\Downloads\manga_factory\tst-cc" "C:\Users\ME\Downloads\manga_factory\testo"
Collecting files...
(1/10) 001.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\001.jpg
776.47 KB -> 769.36 KB [-0.92%]
(2/10) 001.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\001.png
509.36 KB -> 310.91 KB [-38.96%]
(3/10) 002.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\002.jpg
1.26 MB -> 1.25 MB [-0.55%]
(4/10) 002.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\002.png
656.82 KB -> 406.01 KB [-38.19%]
(5/10) 003.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\003.jpg
104.67 KB -> 97.56 KB [-6.79%]
(6/10) 003.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\003.png
546.47 KB -> 328.09 KB [-39.96%]
(7/10) 004.jpg -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\004.jpg
821.05 KB -> 813.94 KB [-0.87%]
(8/10) 004.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\004.png
565.50 KB -> 350.47 KB [-38.02%]
(9/10) 111.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\111.png
906.00 B -> 906.00 B [0.00%]
(10/10) 112.png -> C:\Users\ME\Downloads\manga_factory\tst-cc\New folder - Copy\112.png
Compressing...

==================> PROGRAM ENDS

Here are some known working files (workingfiles.zip).

Using -o does place output into root (/) in Linux

/caesium # caesiumclt -o /tmp ./toll.jpg 
(1/1) toll.jpg -> /toll.jpg
1.23 MB -> 1.23 MB [-0.20%]
-------------------------------
Compression completed in 0m0s82ms
1.23 MB -> 1.23 MB [-0.20% | -2.47 KB]

Previous versions did place the image to /tmp/toll.jpg then. The current version doesn't do this.

On windows after 509 files throws error.

After compressing 509 files caesium throws and error and exits.

[ERROR] 203: Failed to open JPEG file while compressing
[ERROR] 201: Failed to open input JPEG file while optimizing

No matter what group of images I run this against it always errors once it tries to work on the 510th file.

OS: Windows 10 64-bit
Version: current beta.

no brew installation method for os x

The standard way of installing software (especially open-source) one is via brew and it seems that Caesium was not added to http://brew.sh

Now having one makes harder to people to install it and is also a sign of lack of maturity.

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.