oxipng icon indicating copy to clipboard operation
oxipng copied to clipboard

Other input formats?

Open ILoveGoulash opened this issue 1 year ago • 6 comments

Hello, I used to use optipng on the output of long image processing pipelines and when doing so, I chose the simplest possible interchange format to avoid any useless encoding cost. Usually, it was PPM (since I knew my input didn't have an alpha channel).

Would it be possible for oxipng to support at least one such format? Netpbm would probably be the most suitable and the image crate seems to have support for some of them (https://docs.rs/image/latest/image/codecs/pnm/index.html).

For an idea of the "cost" of using PNG in this situation (multiplied by num_images / num_cpu):

$ magick identify /tmp/tmp.ppm
/tmp/tmp.ppm PPM 5551x6380 5551x6380+0+0 8-bit sRGB 101.324MiB 0.120u 0:00.087
$ time magick convert -define png:compression-level=0 /tmp/tmp.ppm /tmp/tmp.png
magick convert -define png:compression-level=0 /tmp/tmp.ppm /tmp/tmp.png  1.72s user 0.16s system 182% cpu 1.033 total
$ time magick convert /tmp/tmp.ppm /tmp/tmp2.ppm
magick convert /tmp/tmp.ppm /tmp/tmp2.ppm  0.19s user 0.11s system 99% cpu 0.300 total
$ time magick convert /tmp/tmp.ppm /tmp/tmp.pam
magick convert /tmp/tmp.ppm /tmp/tmp.pam  0.18s user 0.11s system 99% cpu 0.289 total
$ time magick convert /tmp/tmp.ppm /tmp/tmp.miff
magick convert /tmp/tmp.ppm /tmp/tmp.miff  0.19s user 0.11s system 99% cpu 0.302 total

ILoveGoulash avatar Dec 18 '22 18:12 ILoveGoulash

Maybe work on https://github.com/shssoichiro/oxipng/issues/376 might help this (or vice versa)?

TPS avatar Dec 19 '22 11:12 TPS

It is definitely related, at least for internal code structure matters.

ILoveGoulash avatar Dec 19 '22 12:12 ILoveGoulash

I would also be interested in support for GIF and BMP as input formats.

chrispy-snps avatar Apr 12 '23 21:04 chrispy-snps

I would also be interested in support for GIF and BMP as input formats.

what do you want to optimize on BMP format, that has no compression?

Vasilich avatar Apr 12 '23 21:04 Vasilich

what do you want to optimize on BMP format, that has no compression?

I want to convert them to PNG, then optimize them. It can be done with sequential commands (convert then oxipng), but there is convenience in integrating the format support so things like xargs and parallel can be more easily used.

chrispy-snps avatar Apr 12 '23 22:04 chrispy-snps

what do you want to optimize on BMP format, that has no compression?

@Vasilich FYI, BMP has optional simple compression. 🙇🏾‍♂️

TPS avatar Apr 13 '23 11:04 TPS