NewTechAudit
70

Как сжимать изображения с помощью ImageMagick?

В закладки

Для компрессии изображения мы будем использовать пакет для обработки графики

ImageMagick ImageMagick для Windows можно скачать по ссылке.

На этой странице найдите раздел «Windows Binary Release» и в нём ссылку на скачивание файла ImageMagick-х.х.х-хх-portable-Q16-x86.zip (где х.х.х-хх — номер последней версии ПО), или ImageMagick-х.х.х-хх-portable-Q16-x64 (в зависимости от версии используемой вами операционной системы, 32- (x86) или 64-битной (x64)).

Скачайте необходимый файл. Для дальнейшей работы нам потребуется файл convert.exe, который находится в корневой папке скачанного архива.

Далее проделываем всё точно так же, как и раньше при обработке видеофайлов. Можно даже использовать уже созданные ранее для этого папки.

  • Создайте пустую папку, в которой в дальнейшем будете производить обработку графических файлов. Для удобства опять назовём эту папку WORK.
  • В папке WORK создайте — да, всё правильно, две папки IN и OUT.
  • Распакуйте файл convert.exe из скачанного архива в папку WORK.
  • Скопируйте в папку WORK\IN графический файл, который вы хотите сжать. Для удобства условимся, что этот файл называется image.jpg.
  • В папке WORK создайте текстовый файл convert.bat. В текстовом редакторе запишите в него команду:
convert.exe in\image.jpg -quality 60 -filter Lanczos -sampling-factor 4:2:0 -define jpeg:dct-method=float -thumbnail x1080 out\image.jpg

6. Сохраните и закройте файл convert.bat, затем запустите его. Программа convert.exe не столь говорлива, как ffmpeg.exe, поэтому на экране появится пустое чёрное окно, просто говорящее нам о том, что процесс обработки изображения запущен.

После завершения работы конвертора окно исчезнет, а в папке OUT будет находиться сжатый файл image.jpg. В зависимости от размеров, качества и параметров сжатия исходного файла, размер сконвертированного файла может быть от 5 до 20 раз меньше исходного.

Рассмотрим подробнее параметры команды, которую мы записали в файле convert.bat.

Возможностей у программы convert и другого ПО из пакета ImageMagick не меньше, а даже больше, чем у ffmpeg (среди которых, например, есть команды преобразования и сборки исходных графических файлов в документ PDF, обратное преобразование из PDF в изображение, преобразование файла изображения в текст с распознаванием и т.п.). Более подробная справка по работе с ImageMagick и примеры команд (на английском языке) находятся на официальном сайте проекта.

К сожалению, полноценной русскоязычной документации в природе не существует, поэтому для каждого конкретного случая придётся пользоваться Google или Яндексом — в интернете можно найти множество примеров использования утилит пакета.

Автоматизацию процесса обработки всех исходных файлов изображений, которые находятся в папке IN, сделаем аналогично обработке видеофайлов, с помощью JScript-скрипта.

Для этого в папке WORK создайте текстовый файл convert.js. В текстовом редакторе вставьте в него следующий программный код:

fso=new ActiveXObject("Scripting.FileSystemObject"); //создаём объект fso для работы с файлами WshShell=WScript.CreateObject("WScript.Shell"); //создаём объект для работы с окружением WorkScriptPath=fso.GetParentFolderName(WScript.ScriptFullName); //получаем имя каталога скрипта //Получаем список файлов в каталоге IN fin=fso.GetFolder("in\\"); //создаем объект f со свойствами каталога IN fc=new Enumerator(fin.files); //создаем объект fc, содержащий список файлов в каталоге IN for (; !fc.atEnd()==true; fc.moveNext()) //двигаемся по этому списку до последней записи { fn=fso.GetFileName(fc.item()); //извлекаем имя исходного файла без пути //заменяем расширение конечного файла на JPG if (fn.substr(fn.length-4, 1)==".") fn2=fn.substr(0, fn.length-3)+"jpg" else fn2=fn.substr(0, fn.length-4)+"jpg" //формируем строку команды конвертации очередного файла (можете попробовать поменять какие-нибудь параметры строки команды convert) command_string=WorkScriptPath+ "\\convert.exe "+"\""+WorkScriptPath+"\\in\\"+fn+"\""+ " -quality 60 -filter Lanczos -sampling-factor 4:2:0 -define jpeg:dct-method=float -thumbnail x1080 "+ "\""+WorkScriptPath+"\\out\\"+fn+"\""; result=WshShell.Run(command_string, 1, true); //выполняем команду конвертации }

Теперь, если запустить скрипт convert.js, мы увидим открывающиеся и закрывающиеся окна утилиты convert. Когда последнее окно закроется, в папке OUT будут лежать все сжатые файлы изображений.

Итак, надеюсь, что вам были полезны приёмы, описанные в этой статье. На самом деле, случаи, которые мы рассмотрели, представляют собой лишь малую толику того, что можно сделать, используя все возможности FFMpeg и ImageMagick. Изучив способы и примеры применения этих программ, вы получите в своё распоряжение мощные инструменты для решения большинства задач, связанных с обработкой видео и графики.

Лайфхаки IT, проверенные AI-решения для стандартных задач
{ "author_name": "NewTechAudit", "author_type": "editor", "tags": [], "comments": 0, "likes": 0, "favorites": 1, "is_advertisement": false, "subsite_label": "newtechaudit", "id": 120682, "is_wide": false, "is_ugc": false, "date": "Thu, 16 Apr 2020 13:42:20 +0300", "is_special": false }
Selectel
IT-инфраструктура для стартапов и бизнеса
Подписан
Отписаться
Объявление на vc.ru
0
Комментариев нет
Популярные
По порядку

Прямой эфир