Câu trả lời:
Bạn có thể sử dụng công cụ mogrify của ImageMagick
mogrify -format jpg * .bmp
sudo apt install imagemagick
trên Ubuntu và bạn có thể thiết lập chất lượng bằng cách thêm-quality 100
Bạn có thể đã cài đặt ImageMagick trên Ubuntu.
Điều đó có thể làm ,
convert filename.bmp filename.jpg
cập nhật:
Các mogrify
(trả lời bằng hyperslug
và giới thiệu bởi cjm
) cũng là một lựa chọn tốt.
Sử dụng chương trình mogrify để thay đổi kích thước hình ảnh, làm mờ, cắt, khử màu, hòa sắc, vẽ, lật, nối, lấy mẫu lại, và nhiều hơn nữa.
Công cụ này tương tự để chuyển đổi ngoại trừ tệp hình ảnh gốc bị ghi đè
(trừ khi bạn thay đổi hậu tố tệp với-format
tùy chọn) với bất kỳ thay đổi nào bạn yêu cầu.
Hãy để tôi làm một chút thay đổi để trả lời salmonmoose:
for i in `ls *.bmp`; do convert $i $i.jpg; done
Các công việc trên nhưng tạo ra các tệp có tên "bmp.jpg". Bạn có thể nhận được các tập tin .jpg bằng lệnh này:
for i in *.bmp; do convert ${i} ${i%bmp}jpg; done
Xem man bash
để biết chi tiết của for
lệnh. Phần này ${i%bmp}
có nghĩa là chuỗi "$ {i}" không có chuỗi con "bmp" ở cuối.
Có các hoạt động khác để chuyển đổi chuỗi trong "$ {i}". "$ i" là cách viết tắt của "$ {i}". Phần ls *.bmp
trong câu trả lời của salmonmoose có nghĩa là "thực thi ls *.bmp
, sau đó phần for i
gán cho mỗi chuỗi được phân tách bằng dấu cách cho i
". Điều tương tự cũng đạt được bởi *.bmp
vì nó khớp với tất cả các tên tệp trong thư mục.
Có một nhược điểm với for
- nếu các tệp trong thư mục của bạn có khoảng trắng trong tên, ví dụ "ảnh cưới 1.bmp", nó sẽ được gán 3 lần cho i
var, thực hiện các lệnh sau:
convert wedding wedding.jpg
convert picture picture.jpg
convert 1.bmp 1.bmp.jpg
Trong câu trả lời của tôi, trận đấu "$ {i% bmp}" không thành công.
Nhưng có một giải pháp - bạn có thể sử dụng find
lệnh thay thế. Xem man find
để biết chi tiết. Bạn nên gõ một cái gì đó như sau (vui lòng kiểm tra cú pháp với trang man trước khi thử):
find -name *.bmp -type f -exec convert '{}' '{}'.jpg \;
(Tôi không chắc lắm về phần tên, và tôi có một số nghi ngờ trong -exec
phần này, xem man find
trước)
Nếu bạn muốn tham gia tất cả các hình ảnh trong một tệp .jpg, bạn có thể ghép chúng với bộ lọc khác, như hình ảnh được đề cập trong câu trả lời đầu tiên.
for i in `ls *.bmp`; do convert $i $i.jpg; done
Vâng, điều này sẽ tạo ra một loạt các tệp được gọi là filename.bmp.jpg nhưng nó sẽ thực hiện công việc.
ls
.