Уменьшить размер файла при изменении размера с помощью mogrify

Я люблю параметры командной строки imagemagick. Mogrify отлично подходит для изменения размера изображений и изменения качества, что я и использую чаще всего. Тем не менее, я отметил, что размер файла часто больше, чем должен быть. Особенно с маленькими изображениями. Например, у меня есть обычная фотография 640 пикселей (ширина), которую я изменяю на качество 80 и ширину 80 пикселей:

mogrify -quality 80 -resize 80 file.jpg

Работает хорошо, размер моего изображения изменяется, а качество меняется на 80. Однако размер файла составляет около 40 КБ. Для такого крошечного изображения это огромно! Когда я использую mtPaint, открываю файл и сохраняю его (ничего не меняя, просто CTRL+O, CTRL+S), размер файла уменьшается с более чем 95% до менее чем 2 КБ! Я видел это часто бывает.

Что идет не так?

2 ответа

Решение

Я нашел ответ... это было в "метаданных"! Очевидно, что это легко весит около 18 Кбайт на изображение, поэтому в оригинале вы можете не заметить этого, но при небольшом размере это означает 18 Кбайт + 2 Кбайт = 20 Кбайт общего размера файла. Они значительно увеличились за счет:

mogrify -strip file.jpg

TL;DR: указать -compress+ формат сжатия, в дополнение к , чтобы сохранить тот же формат сжатия входных файлов и уменьшить размер файла.

Проблема

Как упомянул пользователь6019, -stripудалит метаданные любого файла, через который вы проходите, или magick mogrify(>= версия 7).

Однако, когда я попробовал эту команду, которая является версией выше:

magick mogrify -strip -density 535 -debug cache *.tif,

размеры моих выходных файлов по-прежнему не уменьшились.

Информация о версии

ОС: Windows 11 Домашняя, версия 21H2

IM: 7.1.0-19 Q16-HDRI x64 22 декабря 2021 г.

Решение

Изучив детали файлов до и после , я заметил, что удалил формат сжатия моих входных файлов, оставив полностью несжатые файлы. В результате все размеры файлов были увеличены примерно в 400 раз (вход = 59 КБ; вывод = 26172 КБ).

После прочтения этого поста кажется, что ImageMagick по-разному обрабатывает файлы, сжатые LZW, в зависимости от того, включен ли формат сжатия. Я явно форсировал формат сжатия, используя эту строку кода (после компиляции приведенной выше команды):

magick mogrify -compress LZW *.tif

и размеры файлов вернулись к тому же значению, что и до обработки с помощью IM (т.е. размеры файлов уменьшились).

Итак, в будущем, если людей беспокоят размеры выходных файлов, следующие mogrifyили даже convert/ magickзвонки, перепроверьте сжатие тоже!

Другие вопросы по тегам