Конвертируйте кучу файлов BMP в JPEG в Linux

32685
JoelFan

Кто-то прислал мне кучу файлов BMP, и они нужны мне в формате JPEG. Я мог бы конвертировать их один за другим, используя GIMP, но я бы предпочел сделать все это за один раз. У меня есть Ubuntu.

30

5 ответов на вопрос

42
hyperslug

Вы можете использовать инструмент MoMrify от ImageMagick

mogrify -format jpg * .bmp 
Обратите внимание, что этот ответ работает и для Windows, так как ImageMagick доступен для загрузки и для Windows. Gnoupi 15 лет назад 1
Это `sudo apt install imagemagick` в Ubuntu, и вы можете установить качество, добавив` -quality 100` mpen 7 лет назад 0
15
nik

Скорее всего, на Ubuntu установлена ​​программа ImageMagick .
Что можно сделать ,

convert filename.bmp filename.jpg 

Обновить:

mogrify(Отвечает hyperslugи перенаправлены cjm) также является хорошим вариантом.

Используйте программу mogrify для изменения размера изображения, размытия, обрезки, удаления пятен, сглаживания, рисования, переворачивания, объединения, повторной выборки и многого другого.
Этот инструмент похож на преобразование, за исключением того, что исходный файл изображения перезаписывается
(если вы не изменяете суффикс файла с помощью -formatопции) с любыми изменениями, которые вы запрашиваете.

Команда mogrify в ImageMagick лучше, чем конвертировать, потому что ее можно легко использовать с подстановочными знаками. Смотрите ответ гиперслуга. cjm 15 лет назад 1
6
anonymous

Позвольте мне немного изменить ответ лосося:

for i in `ls *.bmp`; do convert $i $i.jpg; done 

Выше работает, но генерирует файлы с именем "bmp.jpg". Вы можете получить файлы .jpg с помощью этой команды:

for i in *.bmp; do convert $ $jpg; done 

Смотрите man bashподробности forкоманды. $Часть означает, что строка «$ » без «BMP» подстроки в конце.

Существуют и другие операции для преобразования строки в «$ ». «$ i» - это сокращение от «$ ». ls *.bmpЧасть в salmonmoose ответа означает «выполнить ls *.bmp, то для iчасти присваивает каждую строку, разделенные пробелами до i». То же самое достигается благодаря тому, *.bmpчто оно соответствует всем именам файлов в каталоге.

Недостаток в том, что for- если в именах файлов в вашем каталоге есть пробелы, например «wedding picture 1.bmp», он будет назначен 3 раза в ivar, выполняя следующие команды:

convert wedding wedding.jpg  convert picture picture.jpg convert 1.bmp 1.bmp.jpg 

В моем ответе также совпадение "$ " не удалось.

Но есть решение - вы можете использовать findкоманду вместо этого. Смотрите man findподробности. Вы должны напечатать что-то вроде следующего (пожалуйста, проверьте синтаксис с man-страницей, прежде чем пытаться это сделать):

find -name *.bmp -type f -exec convert '{}' '{}'.jpg \; 

(Я не очень уверен в названии части, и у меня есть некоторые сомнения в -execчасти, см. В man findпервую очередь)

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

1
salmonmoose
for i in `ls *.bmp`; do convert $i $i.jpg; done 

Да, это создаст кучу файлов с именем filename.bmp.jpg, но это сделает работу.

0
Matias

Вы можете достичь этого с помощью ImageMagick. В этой ссылке приведены примеры