Конвертируйте кучу файлов 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 останутся на месте.