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

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

6 ответов

Решение

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

mogrify -формат jpg *.bmp

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

convert filename.bmp filename.jpg

Обновить:

mogrify (ответил hyperslug и указано cjm) тоже хороший вариант.

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

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

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

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

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

Увидеть man bash для деталей о for команда. ${i%bmp} part означает строку "${i}" без подстроки "bmp" в конце.

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

Есть недостаток с for - если файлы в вашем каталоге имеют пробелы в имени, например, "wedding picture 1.bmp", это будет назначено 3 раза i var, выполняя эти команды:

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

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

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

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

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

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

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

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

Конвертируйте .bmp в .jpg с помощью Linux:

      for ii in *bmp;do base=`echo $ii|cut -d"." -f1`; convert $ii $base.jpg;done

Полученные результаты:

      foo2.bmp becomes foo2.jpg

Рекурсивно с использованием find и mogrify ImageMagick:

      find . -iname *.bmp -exec mogrify -format png "{}" \;

Файлы BMP останутся на месте.

Другие вопросы по тегам