Before posting an image to the fedi, I want to be mindful about the network burden it will cause. I’m only uploading the image once but potentially thousands of people could end up downloading it.
If it’s a color image, then JPG is typically best. This #ImageMagick command reduces the filesize quite a bit, trading off quality:
$ convert "$original_image_file" \
+dither \
-posterize 8 \
-sampling-factor 4:2:0 \
-strip \
-quality 75 \
-interlace Plane \
-gaussian-blur 0.05 \
-colorspace RGB \
-strip \
smaller_file.jpg
If it’s a pic of a person, this processing will likely be a disaster. But for most things where color doesn’t matter too much, it can be quite useful. Play with different -posterize
values.
If you can do with fewer pixels, adding a -resize
helps.
$ convert "$original_image_file" -resize 215x smaller_file.jpg
If you can get away with black and white, jpeg is terrible. Use PNG instead. E.g.
$ convert "$original_image_file" -threshold 30% -type bilevel smaller_file.png
For privacy, strip the metadata
The ImageMagick -strip
option supposedly strips out metadata. But it’s apparently not thorough because the following command yields a slightly smaller file size:
$ exiftool -all= image.jpg
What else?
Did I miss anything? Any opportunities to shrink images further? In principle the DjVu format would be more compact but it’s not mainstream and apparently not accepted by Lemmy.