Кто-то прислал мне кучу файлов BMP, и они нужны мне в формате JPEG. Я мог бы конвертировать их один за другим, используя GIMP, но я бы предпочел сделать все это за один раз. У меня есть Ubuntu.
5 ответов
Вы можете использовать инструмент MoMrify от ImageMagick
mogrify -format 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}
означает строку "$ {i}" без подстроки "bmp" в конце.
Существуют и другие операции для преобразования строки в «$ {i}». «$ i» - это сокращение от «$ {i}». Часть ls *.bmp
в ответе salmonmoose означает «выполнить ls *.bmp
, тогда часть for 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, но это сделает работу.
Вы можете достичь этого с помощью ImageMagick. В этой ссылке приведены примеры