У меня есть пара изображений размером 32 МБ, и я хочу изменить их размер с 32 МБ на 100 КБ или любые КБ размер, не влияя на его цвета.
Я пытаюсь выполнить следующие команды:
muhammad@muhammad-mohsin:~/scans$ find . -iname '*.png' -exec mogrify -format jpg "*.png" {} +
muhammad@muhammad-mohsin:~/$ find . -type f -iname \*.png -delete
muhammad@muhammad-mohsin:~/$ find . -iname '*.jpg' -exec mogrify -define jpeg:extent=300kb -strip -quality 90 -scale 90% *.jpg {} +
Сначала я конвертирую PNG в JPG, уменьшая его размер с 32 Мбайт до 5,8 Мбайт, и все остается прежним, но когда я использую третью команду, она удаляет цвет фона в изображении и создает это оттенки серого как бы размытые.
Тем не менее, текст по-прежнему читается, а цвета и фоновый логотип - нет.
Как я могу добиться этого с помощью convert, mogrify или любого другого инструмента? До сих пор я перепробовал все возможное.
Я пытаюсь
найти . -iname '*.png' -exec convert -resize 60% -quality 60 "*.jpg" {} +
но это не работает.
Ссылка. https://superuser.com/questions/71028/batch-converting-png-to-jpg-in-linux
$ ls -1 *.png | xargs -n 1 bash -c 'convert -quality 60 "$0" "${0%.*}.jpg"'
Конвертирует мой пример 31MB.png в 1.4MB.jpg .... Возможно, вам придется повторить, например, $ ls -1 *.PNG | ...
и т.д.
Ссылка на комментарий @steeldriver : "немного лучше xargs -d '\n' -n 1
"
Это из-за того, как работает сжатие JPEG. Он пытается округлить соседние пиксели, которые похожи друг на друга, до аналогичных значений. Это приводит к потере деталей и блочности.
Это становится более заметным по мере увеличения уровня сжатия, что в точности то, что вы делаете. Кроме того, вы делаете это в два этапа:
Вы , вероятно, получите лучший результат, перейдя без потерь к потерям в конечном качестве, таким образом применяя сжатие с потерями только один раз, например с использованием jpeg: extension = 300kb -strip -quality 90 -scale 90%
в первом преобразовании.
Кроме того, вы ничего не говорите о размере изображения и уровне детализации. Уменьшить его до 300 КБ и сохранить желаемое качество может оказаться невозможным.
Чтобы избавиться от пятен на фоне, вы можете попытаться применить к документу пороговые значения в каком-нибудь программном обеспечении для редактирования изображений, например, сделав белый цвет менее чем определенного оттенка серого.
Однако, что бы вы ни делали, сжатие из формата без потерь 30 МБ в формат с потерями 300 КБ приведет к заметному снижению качества.