{"id":14268,"url":"\/distributions\/14268\/click?bit=1&hash=1e3309842e8b07895e75261917827295839cd5d4d57d48f0ca524f3f535a7946","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f71e1caf-7964-5525-98be-104bb436cb54"}

Как сжимать изображения с помощью 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. Изучив способы и примеры применения этих программ, вы получите в своё распоряжение мощные инструменты для решения большинства задач, связанных с обработкой видео и графики.

0
Комментарии
-3 комментариев
Раскрывать всегда