Перетворіть купу файлів BMP в JPEG в Linux


30

Хтось надіслав мені купу файлів BMP, і мені вони потрібні в JPEG. Я міг би конвертувати їх по одному за допомогою GIMP, але я б краще все це робив за один раз. У мене є Ubuntu.

Відповіді:


43

Ви можете скористатись інструментом mogrify ImageMagick

mogrify -format jpg * .bmp

1
Зауважте, що ця відповідь працює і для Windows, оскільки ImageMagick також доступний для завантаження для Windows.
Gnoupi

Це sudo apt install imagemagickна Ubuntu, і ви можете встановити якість, додавши-quality 100
1717

15

Ви, ймовірно, у Ubuntu встановили ImageMagick .
Це може зробити ,

convert filename.bmp filename.jpg

оновлення:

mogrify(Відповідає hyperslugі перенаправлені cjm) також є хорошим варіантом.

Використовуйте програму mogrify, щоб змінити розмір зображення, розмити, обрізати, вимпел, забарвити, намалювати, перевернути, приєднатись, повторно взяти вибірку та багато іншого.
Цей інструмент є подібним до конвертації, за винятком того, що початковий файл зображення буде перезаписаний
(якщо ви не зміните суфікс файлу за допомогою -formatпараметра) з будь-якими потрібними вам змінами.


1
Команда mogrify ImageMagick краще, ніж конвертувати для цього, тому що її можна легко використовувати за допомогою макіяжів. Дивіться відповідь гіперслуга.
cjm

7

Дозвольте мені трохи змінити відповідь на лосось:

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}Частина означає , що рядок «$ {я}» без «BMP» підрядка в кінці.

Є й інші операції з перетворення рядка в "$ {i}". "$ i" - це скорочення для "$ {i}". ls *.bmpЧастина в salmonmoose відповіді означає «виконати ls *.bmp, то для iчастини привласнює кожен рядок , розділені пробілами до i». Це досягається тим, *.bmpщо він відповідає всім іменам файлів у каталозі.

Існує недолік з for- якщо у файлах у вашому каталозі пробіли у назві, наприклад "весільна картинка 1.bmp", він буде присвоєний вару 3 разів i, виконуючи ці команди:

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-файлі, ви можете з'єднати їх з іншим фільтром, як той, що згадується у першій відповіді.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.