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