|
|||||||
Как переконвертировать графические файлы (картинки) через команду mogrify - замена команды convert
Время создания: 21.06.2019 11:13
Текстовые метки: mogrify, linux, картинка, файл, формат, графический, конвертация, convert, ImageMagick
Раздел: Компьютер - Linux - ImageMagic
Запись: xintrea/mytetra_syncro/master/base/15611048104uuorgdxck/text.html на raw.github.com
|
|||||||
|
|||||||
Введение Для переконвертирования картинок через командную строку, в Linux, традиционно, используется программа convert, входящая в пакет ImageMagick. Однако, эта программа частенько выкидывает разные сюрпризы. Сегфолты на файлах со сканами в разрешении 600 dpi с размером А4 - это обычное дело. Да и скорость работы convert оставляет желать лучшего: перевод одного файла картинки средних размеров в другой формат может занять десятки секунд на каком-нибудь Core2Duo. Есть ли этой программе альтернатива? Да, есть! Называется она mogrify. Эта программа тоже входит в пакет ImageMagick. И, похоже, что использует те же библиотеки что и convert. Но почему-то работает в разы лучше. В Linux много загадочных вещей, и вот такое положение дел для двух практически идентичных программ - это норма. Формально, mogrify и convert - это один и тот же инструмент, у них даже опции одинаковые. Но convert не удаляет предыдущие файлы, а mogrify - удаляет. Формально, только в этом разница. И, видимо, удаляет только в том случае, если новый файл имет точно такое же название как и предыдущий. Например, через mogrify можно переконвертировать png-файлы в jpg-файлы такой командой: mogrify -format jpg *.png В результате получатся новые jpg-файлы, но старые файлы тоже останутся. Что самое интересное, так это то, что mogrify сработает очень быстро. И, самое интересное - правильно. И это очень важно. А что может пойти не так? Вот пример. Имеем один и тот же набор файлов. Даем команду через mogrify: > ls -la итого 1176 drwxr-xr-x 2 xi xi 4096 июн 21 11:20 . drwxr-xr-x 5 xi xi 4096 июн 21 11:18 .. -rw-r--r-- 1 xi xi 346588 июн 21 09:46 list01.png -rw-r--r-- 1 xi xi 319640 июн 21 09:40 list02.png -rw-r--r-- 1 xi xi 220139 июн 21 09:50 list03.png -rw-r--r-- 1 xi xi 299066 июн 21 09:59 list04.png > mogrify -format jpg *.png > ls -la итого 4580 drwxr-xr-x 2 xi xi 4096 июн 21 11:21 . drwxr-xr-x 5 xi xi 4096 июн 21 11:18 .. -rw-r--r-- 1 xi xi 1020737 июн 21 11:21 list01.jpg -rw-r--r-- 1 xi xi 346588 июн 21 09:46 list01.png -rw-r--r-- 1 xi xi 986451 июн 21 11:21 list02.jpg -rw-r--r-- 1 xi xi 319640 июн 21 09:40 list02.png -rw-r--r-- 1 xi xi 627298 июн 21 11:21 list03.jpg -rw-r--r-- 1 xi xi 220139 июн 21 09:50 list03.png -rw-r--r-- 1 xi xi 843461 июн 21 11:21 list04.jpg -rw-r--r-- 1 xi xi 299066 июн 21 09:59 list04.png Видим, что все отработало правильно, появились jpg-файлы в количестве 4-х штук. Теперь то же самое через convert: > ls -la итого 1176 drwxr-xr-x 2 xi xi 4096 июн 21 11:20 . drwxr-xr-x 5 xi xi 4096 июн 21 11:18 .. -rw-r--r-- 1 xi xi 346588 июн 21 09:46 list01.png -rw-r--r-- 1 xi xi 319640 июн 21 09:40 list02.png -rw-r--r-- 1 xi xi 220139 июн 21 09:50 list03.png -rw-r--r-- 1 xi xi 299066 июн 21 09:59 list04.png > convert -format jpg *.png > ls -la итого 1664 drwxr-xr-x 2 xi xi 4096 июн 21 11:23 . drwxr-xr-x 5 xi xi 4096 июн 21 11:18 .. -rw-r--r-- 1 xi xi 346588 июн 21 09:46 list01.png -rw-r--r-- 1 xi xi 319640 июн 21 09:40 list02.png -rw-r--r-- 1 xi xi 220139 июн 21 09:50 list03.png -rw-r--r-- 1 xi xi 192148 июн 21 11:23 list04-0.png -rw-r--r-- 1 xi xi 179300 июн 21 11:23 list04-1.png -rw-r--r-- 1 xi xi 123230 июн 21 11:23 list04-2.png -rw-r--r-- 1 xi xi 299066 июн 21 09:59 list04.png Тут вообще творится трешак. Вместо jpg-формата получился png-формат. И почему-то вместо 4-х файлов было сгенерировано 3 файла. Может быть, новые файлы только называются как png, а на самом деле это jpg? Посмотрим: > file list04-0.png list04-0.png: PNG image data, 2480 x 3507, 2-bit grayscale, non-interlaced Нет, сгенерировались именно png-файлы. Чтение man света на проблему не проливает. Все опции у этих двух программ идентичные. Но одна ведет себя правильно, а вторая черти как. Поэтому в этой статье дан такой лайфхак: если криво работает convert, воспользуйтесь mogrify. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|