มีคนส่งไฟล์ BMP ให้ฉันจำนวนมากและฉันต้องการไฟล์เป็น JPEG ฉันสามารถแปลงทีละคนโดยใช้ GIMP แต่ฉันอยากทำทุกอย่างในครั้งเดียว ฉันมีอูบุนตู
มีคนส่งไฟล์ BMP ให้ฉันจำนวนมากและฉันต้องการไฟล์เป็น JPEG ฉันสามารถแปลงทีละคนโดยใช้ GIMP แต่ฉันอยากทำทุกอย่างในครั้งเดียว ฉันมีอูบุนตู
คำตอบ:
คุณสามารถใช้เครื่องมือ mogrify ของ ImageMagick
mogrify -format jpg * .bmp
sudo apt install imagemagick
อยู่บน Ubuntu และคุณสามารถตั้งค่าคุณภาพโดยเพิ่ม-quality 100
คุณน่าจะติดตั้งImageMagickบน Ubuntu
ที่สามารถทำ ,
convert filename.bmp filename.jpg
อัปเดต:
mogrify
(ตอบhyperslug
และเรียกโดยcjm
) ยังเป็นตัวเลือกที่ดี
ใช้โปรแกรมmogrifyเพื่อปรับขนาดรูปภาพเบลอครอบตัด despeckle dither วาดบนพลิกพลิกเข้าร่วมตัวอย่างใหม่และอีกมากมาย
เครื่องมือนี้มีความคล้ายคลึงกันในการแปลงยกเว้นว่าไฟล์ภาพดั้งเดิมจะถูกเขียนทับ
(เว้นแต่คุณจะเปลี่ยนคำต่อท้ายไฟล์ด้วย-format
ตัวเลือก) พร้อมกับการเปลี่ยนแปลงใด ๆ ที่คุณร้องขอ
ให้ฉันเปลี่ยนแปลงเล็กน้อยเพื่อคำตอบ salmonmoose:
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" substring ที่สิ้นสุด
มีการดำเนินการอื่นเพื่อแปลงสตริงใน "$ {i}" "$ i" เป็นชวเลขสำหรับ "$ {i}" ls *.bmp
มีส่วนร่วมใน salmonmoose คำตอบที่หมายถึง "การดำเนินการ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 page ก่อนลองใช้):
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 แต่มันจะทำงาน
ls
การใช้งานที่ไร้ประโยชน์ของ