วิธีหมุนชุดรูปภาพจากบรรทัดคำสั่ง?


17

ฉันมีภาพ JPEG ชุดใหญ่ทั้งหมดที่มีความละเอียดเท่ากัน การเปิดแต่ละรายการในอินเทอร์เฟซแบบกราฟิกของ Imagemagic หรือ Gimp ใช้เวลานานเกินไป

ฉันจะทำให้แต่ละรูปภาพหมุนและบันทึกเป็นชื่อไฟล์เดียวกันได้อย่างไร


3
ดูที่นี่ แต่ระวังว่าการเข้ารหัส JPEG อีกครั้งมักจะสูญเสีย
Satō Katsura

คำตอบ:


22

คุณสามารถใช้convertคำสั่ง:

 convert input.jpg -rotate -degrees out.jpg

เช่น:

convert input.jpg -rotate -180 out.jpg

บันทึกด้วยชื่อเดียวกัน:

convert file.jpg -rotate -180 file.jpg

หมุนไฟล์ทั้งหมด:

for photo in *.jpg ; do convert $photo -rotate 90 $photo ; done

แก้ไข

คุณสามารถใช้mogrifyเครื่องมือบรรทัดคำสั่ง (เครื่องมือที่ดีที่สุด) ที่แนะนำโดย@ don-crissti

mogrify -rotate 90 *.jpg

1
ขอบคุณฉันจะบอกคำสั่งได้อย่างไรว่าชื่อไฟล์ที่เหลือของ -rotate -180 จะต้องตรงกับที่ถูกต้องหากมีไฟล์จำนวนมาก
sharkant

การหมุนไฟล์ 180 องศาจะให้ผลลัพธ์เหมือนเดิมเสมอไม่ว่าคุณจะหมุนไปทางซ้ายหรือขวา
djsmiley2k TMW

@ GAD3R 360 องศาจะส่งผลให้ภาพเดียวกันหลังจากนั้น การหมุนรูปภาพไปทางซ้ายหรือขวา 180 องศาโดยที่ทั้งคู่จะให้ภาพเดียวกัน (แต่กลับหัว)
djsmiley2k TMW

2
$CAPITAL_NAMESควรปล่อยให้ตัวแปรสภาพแวดล้อม; สำหรับตัวแปรโลคัลเหล่านั้นในเชลล์สคริปต์หรือคำสั่งใช้$normal_lowercase
cat

2
convertเข้ารหัส JPEG อีกครั้งและด้วยเหตุนี้จึงเป็นการสูญเสีย ใช้งานได้ดีขึ้นjpegtran
imz - Ivan Zakharyaschev

16

สำหรับภาพ JPEG และการหมุนมุมฉากให้ใช้jpegtranหรือexiftranเนื่องจากสามารถหมุนภาพแบบไม่สูญเสียได้

for f in *.jpg ; do 
    jpegtran -rotate 180 "$f" > "${f%.jpg}-rotated.jpg"
done

หรือหมุนในตำแหน่ง:

for f in *.jpg ; do
    jpegtran -rotate 180 -outfile "$f" "$f"
done

exiftranยังมี-aธงเพื่อหมุนภาพโดยอัตโนมัติตามสิ่งที่แท็กปฐมนิเทศ EXIF ​​พูด


สำหรับการหมุนทวนเข็มนาฬิกา (มุมซ้าย) ด้วยjpegtranให้ใช้-rotate 270และด้วย-2ธงใช้งาน exiftran ตามคู่มือ
Timo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.