Собственно, сабж. Поддержка 12 бит не совсем официальна, но она есть в libjpeg. Поддержка африметического кодирования есть в GIMP. Вы можете проверить, поддерживается ли арифметическое кодирование в вашем браузере: https://files.catbox.moe/ilkxra.jpg - если видно радугу, значит поддерживается (картинка взята из статьи https://blog.benjojo.co.uk/post/not-all-jpegs-are-the-same)
Моя первая попытка, взять ImageMagick и задать ему разные опции -colorspace и -depth (опции кодирования я не нашел):
for dp in {8,12,16}; do for cs in `convert -list colorspace`; do convert test2.jpg -depth $dp -colorspace $cs -gravity center -auto-level -sharpen +2x3 -resize 256x256^ -crop 256x256+0+0 -auto-level -sharpen 1x0 jpeg-test-$cs-$dp.jpg;done;done
Как результат, 8 и 16-битные файлы идентичны до хешей, 12-битные отличаются, но identify все равно говорит, что оно 8-битное, видимо только пиксели немного иначе считались, а упаковалось оно в 8 бит. Из хорошего - удалось получить JPEG с CMYK внутри.
Вторая попытка была с ffmpeg:
for cc in `ffmpeg -pix_fmts 2>&1 | grep -E "^\S\S\S\S\S\s\S+\s+[0-9]+\s+[0-9]+" | cut -d" " -f2`; do ffmpeg -i test2.jpg -pix_fmt "$cc" -s 32x32 -y "ffmpeg-$cc.jpg";done
Сгенерилось очень много файлов вида:
ffmpeg-yuva420p.jpg
ffmpeg-gbrap16be.jpg
ffmpeg-bgr565be.jpg
ffmpeg-yuv444p.jpg
ffmpeg-pal8.jpg
По факту все они одинаковые, разница только в yuvj420p/yuvj422p/yuvj444p
Хочу много JPEG-файлов, очень разных и очень красивых. С арифметическим кодированием, с 12 битами, в CMYK, в каких-то RGBIQ (упоминается в стандарте, никогда такого не видел), и шобы фотошоп не надо было ставить и мышкой елозить.
Возможно треду место в Development, так как это нужно для тестирования моего собственного творчества (пишу редактор jpeg, обрастаю тестами)