21 ноября 2015

Как в Linux конвертировать изображения из PNG в JPG и наоборот, с помощью командной строки

Мы очень часто в повседневной жизни сталкиваемся с словом - Конвертировать. Конвертировать - преобразовывать из одного формата в другой. Это касается когда мы конвертируем/преобразовываем деньги из одной валюты в другую, например, евро в доллар или любую другую денежную единицу, конвертация в производстве, когда определённый вид продукции преобразовывается в иной, например, в металлургии получить металл путём обработки исходного продукта (руды) в конвертере (металлургическая печь) и т.п.
В данной статье пойдёт речь о конвертации (преобразовании) формата файла изображения из PNG в JPG и наоборот, с помощью командной строки.

Программа convert входит в набор программ (консольных утилит) для чтения и редактирования файлов множества графических форматов — ImageMagick.

Как использовать команду Convert

Прежде всего в вашей системе должна быть установлена программа ImageMagick. Если она не установлена, выполните следующую команду в терминале для установки в Ubuntu и производные:

sudo apt-get install imagemagick


После того как вы убедитесь, что ImageMagick установлен в системе, можно приступить к конвертации путём применения команды convert входной файл выходной файл.

Например, у меня в папке Изображения, файлового менеджера, находится снимок в формате .png:


Прежде всего необходимо войти в данную папку командой в терминале:

cd ~/Изображения

Примечание. Если у вас снимок находится в другой папке, то нужно войти в эту папку, изменив в команде Изображения на название данной папки. Например, если у вас снимок находится в папке Загрузки, то команда будет выглядеть: cd ~/Загрузки и т.п.

После того как вы вошли в искомую папку, выполните в терминале команду, которая конвертирует (преобразует) формат файла из .png в .jpg:

convert терминал.png терминал.jpg


Как видно на снимке, теперь после выполнения команды в папке Изображения у меня появился конвертированный снимок в формате .jpg.

Таким же образом можно преобразовать изображение и наоборот, из формата .jpg в .png.

Команда convert может быть использована более чем в 100 различных опциях.
Например, для изменения размеров снимка. Уменьшить размер изображения, прежде чем он превратится в формат .png:

convert терминал.jpg -resize 200 терминал.png



Для получения списка поддерживаемых форматов команды convert введите и выполните в терминале команду:

convert -list format


Удачи.

33 комментария :

  1. спасибо за статью. теперь буду делать resize в консоли

    ОтветитьУдалить
    Ответы
    1. Так скоро будете и редактировать фото в консоли))) выравнивать температуру с контрастом ... а потом и видео монтажом

      Удалить
    2. ==Так скоро будете и редактировать фото в консоли))) выравнивать температуру с контрастом ... == Совершенно верно. С ImageMagick в консоли можно проводить множество операций с снимками: http://www.imagemagick.org/script/index.php

      Удалить
  2. А можно ли и, если можно, то как конвертировать несколько снимков (папку со снимками) одним "заходом"?

    ОтветитьУдалить
    Ответы
    1. Например, как-то так:

      for f in *.jpg; do convert "$f" -resize 1000 "$f.png"; done

      конвертирует все файлы формата jpg в текущей папке в изображения формата png с масштабированием до 1000 пикс по горизонтали

      for f in *.jpg; do convert "$f" -resize 1000 "$f-conv.jpg"; done

      конвертирует все файлы формата jpg в текущей папке в изображения того-же формата с масштабированием до 1000 пикс по горизонтали и добавлением "conv" к имени

      Удалить
  3. Блин ! Вы всегда находите чем нас удивить .

    ОтветитьУдалить
  4. еще бы как добавить это в контекстное меню, чтобы при клике можно сразу же конвертировать выделенное

    ОтветитьУдалить
    Ответы
    1. Ну так на gnome-look.org полно Nautilus-скриптов для конвертации картинок. Их можно использовать и в Nemo (cinnamon) и в Caja (Mate). Отличие будет лишь в расположении папки скриптов, куда надо его положить (например, для Caja это /home/max/.config/caja/scripts, для nemo сейчас не помню, но можно погуглить), плюс ОБЯЗАТЕЛЬНО надо в тексте скрипта найти в редакторе (Ctrl+F) все переменные типа "$NAUTILUS_SCRIPT_ ....." и заменить на "$CAJA_SCRIPT_" или "$NEMO_SCRIPT_...." соответственно (и вообще везде в тексте, где встречается nautilus, заменить на caja или nemo). И все будет работать.

      Удалить
    2. Для Nautilus есть nautilus-image-converter - расширение Nautilus для массового изменения размера и поворота изображений в контекстном меню изображения.
      Для Nemo - nemo-image-converter

      sudo apt install nautilus-image-converter
      sudo apt install nemo-image-converter

      Удалить
    3. Можно и из репозиториев поставить готовое, как советует Владимир. Но в репах выбор ограниченный (особенно для Caja), поэтому я решил поделиться опытом, как можно переделать любой nautilus-скрипт под Mate или Cinnamon - может, кому и пригодится :)

      Удалить
  5. Вечер добрый зачем такие сложности ведь можно просто переименовать ...

    ОтветитьУдалить
    Ответы
    1. при переименование меняется всего лишь расширение файла, а формат останется прежним

      Удалить
    2. ==при переименование меняется всего лишь расширение файла, а формат останется прежним== Позвольте немного поправить. При простом переименовании меняется лишь название в расширении файла, но не формат! А главное что делает команда convert, это именно изменение формата файла. Чтобы было более понятно, приведу пример. Если переименовать железную руду в металл, она таковой не станет пока её не поместят в конвертер (металлургическая печь) и не сварят металл.

      Удалить
  6. Очень многие вещи в линуксе значительно проще и быстрей делать в терминале,чем в графике.Но это приходит с опытом.

    ОтветитьУдалить
  7. В Ubuntu Tweak раздел Администрирование - Сценарии. Там есть сценарии для преобразования изображений и они как раз для контекстного меню.

    ОтветитьУдалить
  8. Вот вопрос может поможете. Вот хочу вам задать вопрос. Может поможете. Суть такова мне надо изменить иконки не для конкретного файла а точней для всей системы. А точней например у меня есть формат fb2 он отображается как текстовый файл а я хотел бы изменить то бы он отображался в виде книги( иконки у меня в png есть) И сто бы последующие скачанные fb2 тоже отображались тоже в виде книжек. Не в курсе как это можно осуществить?

    ОтветитьУдалить
    Ответы
    1. Предложения в интернете по этому поводу сводятся к ручному редактированию файла /etc/mime.types, но это сложновато и почему-то не всегда срабатывает.
      http://askubuntu.com/questions/52138/how-do-i-change-the-icon-for-a-particular-file-type
      Более простое решение - сменить тему значков на такую, в которой предусмотрена отдельная иконка для fb2, попробуйте к примеру ZonColor (это целый комплект тем иконок в одном стиле, но в разной цветовой гамме, найдется вариант практически под любое оформление).
      http://gnome-look.org/content/show.php?content=156189

      Удалить
    2. CoolReader Поиск по сайту, или же Fbreader.

      Удалить
    3. ==CoolReader Поиск по сайту, или же Fbreader==
      Речь о не о программе для открытия файла, а об иконке файла в "проводнике". Fbreader, например, ее никак не меняет.

      Удалить
  9. Спасибо. ZonColor это бомба для оформления. Но то что мне надо касательно fb2 система его по умолчанию как неизвестный текстовый файл определяет. Ну да ладно что может найду со временем.

    ОтветитьУдалить
    Ответы
    1. ==Но то что мне надо касательно fb2 система его по умолчанию как неизвестный текстовый файл определяет==
      Странно. У меня в ArchLinux zoncolor fb2 с такой иконкой отбражается:
      [im]http://i.imgur.com/uAmB07S.png[/im]
      Возможно, способ установки как-то влияет. Если устанавливали вручную, лучше удалить и воспользоваться репозиторием.
      sudo add-apt-repository ppa:noobslab/icons
      sudo apt-get update
      sudo apt-get install zoncolor-icons

      Или deb-пакетом поставить по этой ссылке
      https://launchpad.net/~noobslab/+archive/ubuntu/icons/+files/zoncolor-icons_1.6.6%7Ewily%7ENoobsLab.com_all.deb

      Удалить
    2. А какой конкретно из данного набора у тебя стоит там из очень много. Я деп пакетом ставил. у меня мин17,3

      Удалить
    3. zoncolorXtra-Ubuntuish-Light, Arch linux Mate. С любой темой из набора ZenColor на fb2 этот значок.

      Удалить
  10. Максет Кощеев читать я знаю чем. там малость другое надо было. Спасибо.

    ОтветитьУдалить
  11. Может в это и дело что не убунту. Там по ходу минт не знает что за файл и он его понимает как текстовый. Менял разные но итог один как определяет как текст. Ну да бог ним. Будим копать может что то накопаю по этому поводу. А иконки в основном похожие на KDE по большей части. Стилей папок на любой вкус...

    ОтветитьУдалить
    Ответы
    1. ==Менял разные но итог один как определяет как текст==
      Ну да и Бог с ним, если подумать. Главное, чтоб по умолчанию открывалось в нужной программе :)

      Удалить
    2. ==А иконки в основном похожие на KDE по большей части==
      В /usr/share/icons/zoncolor/index.theme строчка
      Inherits=oxygen,elementary,Humanity,hicolor
      Вот оно из Oxygen недостающие иконки и берет в первую очередь. Это можно изменить при желании :)

      Удалить
  12. Вас всех наверное очень удивит - что все современные редакторы графики - ато фотошоп и гимп - построены на утилитах imagemagick

    ОтветитьУдалить
  13. Перепробовал разные скриншоты ни один не получилось конвертировать никакими силами:)
    Поверил в себя только после создания и конвертации файла "терминал" .Файлы должны быть без всяких знаков и пропусков между буквами и никаких заглавных.

    ОтветитьУдалить
    Ответы
    1. Имена и пути с пробелами и т.п. следует брать в кавычки, лучше - одинарные. Кроме того, перед пробелом можно поставить бэкслэш, например my\ file.png, чтобы пробел не воспринимался как разрыв. Вообще-то это азы работы с терминальными командами, хотя согласен - не все это знают.

      Удалить
  14. Доброго времени суток! Подскажите пожалуйста, почему при открытии изображений программой Gwenview, выскакивает такая надпись:
    ==Внутренняя ошибка
    Отправьте сообщение об ошибке на http://bugs.kde.org
    No such object path '/modules/kdeconnect/devices/e563e317407835cd/sftp'==
    Как её убрать?
    Linux Mint KDE 18

    ОтветитьУдалить
    Ответы
    1. kdeconnect гадит где-то, копайте в эту сторону.

      Удалить
    2. Посмотрите в свойствах файла John Smith, какой программой он открывается. Было такое у меня только с pdf.

      Удалить