ฉันจะหมุนภาพถ่ายดิจิทัลจำนวนมากได้ถึง 180 องศาในการใช้งานครั้งเดียวได้อย่างไร


20

ฉันมีหลายพันภาพที่ถ่ายด้วย GoPro ที่มีการกลับหัว

ฉันกำลังมองหาวิธีแอปจริงๆที่สามารถพลิกพวกเขาทั้งหมด 180 องศาในการดำเนินการครั้งเดียว

ฉันได้ตรวจสอบทุกตัวเลือกในซอฟต์แวร์ของ GoPro แล้ว แต่ไม่พบสิ่งนี้สำหรับภาพนิ่งเท่านั้น คุณสามารถหมุนได้ในขณะที่ทำวิดีโอ แต่ฉันต้องการเก็บภาพแต่ละภาพ

ฉันใช้ Windows


มีความเกี่ยวข้องและเกี่ยวข้องมาก: การหมุน“ Windows Photo Viewer” นั้นไม่มีการสูญเสียหรือไม่
scottbb

jpegtran เป็นวิธีที่จะไป มันสามารถหมุนและ / หรือพลิก JPEG ได้อย่างไม่มีการสูญเสียและสามารถโทรจากสคริปต์ได้ง่ายเพราะเป็นแอพ CLI
Sarge Borsch

คำตอบ:


31

ฉันจะแนะนำแอปพลิเคชันใด ๆ จากรายการนี้ที่JPEGclub.orgซึ่งพัฒนาและดูแลรักษาซอฟต์แวร์สำหรับกลุ่ม JPEG อิสระ พวกเขามีโค้ดอิสระที่เรียกว่าjpegtranซึ่งสามารถทำการแปลงพื้นฐานบางอย่าง (เช่นการหมุน) โดยไม่ต้องเข้ารหัสภาพใหม่

การหมุนภาพด้วยวิธี "ไร้เดียงสา" (การเรนเดอร์ไปเป็นบิตแมปการปรับบิตแมปใหม่และประหยัดอีกครั้ง) อาจส่งผลให้เพิ่มไฟล์ JPEG ได้มากขึ้นและไฟล์ที่ใหญ่กว่าด้วยข้อมูลที่มีประโยชน์น้อยกว่า

รายการด้านบนมีซอฟต์แวร์ที่ทราบกันดีว่า "ถูกวิธี" ซอฟต์แวร์อื่น ๆ อาจใช้ (อาจใช้ฐานรหัสที่แตกต่างกัน) แต่ ImageMagick ไม่ใช่หนึ่งในนั้น แต่ ณ เดือนสิงหาคม 2559 มี 87 ตัวเลือกสำหรับแพลตฟอร์มการคำนวณที่แตกต่างกันรวมถึง Windows


หมายเหตุจากความคิดเห็น: OP ใช้วงนี้ตามคำตอบนี้:

FOR %f IN (.\Src\*.*) DO jpegtran.exe -rotate 180 %f .\Rotated\%~nxf

ด้วยผลลัพธ์ที่ดี


1
โปรดทราบว่าการหมุนแบบไม่สูญเสียการทำงานจะทำได้ก็ต่อเมื่อแต่ละมิติของแต่ละภาพนั้นมีหลายคูณ 16 พิกเซล - 8 หากไม่ได้ใช้การสุ่มสีแบบ Chroma มิฉะนั้นพิกเซลส่วนเกินจะหายไปหรือรูปภาพจะมีเส้นขอบด้วย ตัวอย่างเช่น 1080 ไม่ใช่ผลคูณของ 16!
Gnubie

2
ฉันสองคำแนะนำของjpegtran; ยิ่งไปกว่านั้นถ้าคุณใส่ใจที่จะรักษาภาพขนาดย่อและOrientationแท็กของ EXIF ไว้คุณอาจพิจารณาว่ารายการexiftranใดขาดหายไปจากรายการ JPEGclub แต่ไม่มีความสูญเสีย คำสั่งของฉัน (บน Linux) สำหรับสิ่งนี้จะเป็นexiftran -i -1 *.jpgหรือfind . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; สิ่งนี้จะต้องปรับตัวสำหรับเชลล์ Windows
Toby Speight

@Toby นอกจากนี้ที่ดี โปรแกรมที่ระบุไว้จำนวนมาก (ส่วนใหญ่) จะยังคงรักษาและอัปเดตข้อมูลเมตาซึ่งเป็นเหตุผลหนึ่งที่ฉันแนะนำหนึ่งรายการแทนที่จะเป็นjpegtranโดยตรง
mattdm

ขอขอบคุณ! ฉันใช้ jpegtran บน Windows การหมุน 180 เป็นสิ่งที่ฉันต้องการ ฉันใส่คำสั่งแบทช์ที่แน่นอนในคำถามสำหรับการอ้างอิงในอนาคต
Johns-305

@ Johns-305 ดีใจที่ฉันช่วยได้ ในการแก้ไขคำถามดูmeta.photo.stackexchange.com/questions/1601/…
mattdm

9

คุณสามารถใช้ImageMagickกับrotateตัวเลือก :

convert image.jpg -rotate 180 result.jpg

คุณควรจะสามารถใช้คำสั่งนี้กับไฟล์หลาย ๆ ไฟล์ขึ้นอยู่กับสภาพแวดล้อมของคุณ


10
โปรดทราบว่าสิ่งนี้จะทำการเข้ารหัส jpeg อีกครั้งทำให้สูญเสียคุณภาพ
mattdm

8

บน Windows คุณสามารถทำได้โดยไม่ต้องมีซอฟต์แวร์พิเศษใด ๆ ในการทำงานสองครั้ง เลือกไฟล์ที่คุณต้องการหมุนใน file Explorer คลิกขวาและทำ "หมุนไปทางขวา" (หรือซ้าย) สองครั้ง มันจะทำแบบไม่สูญเสียถ้าภาพอนุญาต (เช่นขนาดไม่ใช่ "ตลก")


มิติ "ตลก" คืออะไร เหตุใดขนาดของรูปภาพจึงป้องกันการหมุนแบบไม่สูญเสีย
scottbb

2
หลังจากการอ่านการหมุน“ Windows Photo Viewer” สูญหายหรือไม่? , ฉันเข้าใจแล้ว. ทั้งสองมิติต้องมีค่าเป็น 8 เท่าเพื่อที่จะหมุนแบบไม่สูญเสีย
scottbb

1
นี่คือคำตอบที่ดีที่สุด ฉันเข้าร่วมเว็บไซต์เพียงเพื่อโหวต
fi12

5

คุณสามารถใช้xnviewบน windows ซึ่งมีการประมวลผลโหมดแบทช์และสำหรับการหมุนภาพอย่างง่ายมีตัวเลือกในการหมุนภาพตามข้อมูล exif

เลือกภาพทั้งหมด (แม้จะเป็นภาพที่ถูกต้อง! มันจะรู้ได้ว่ามันเป็นแนวที่ดีอยู่แล้ว), "หมุนตาม exif" และมันจะทำมัน (โดยไม่คำนวณ jpg ใหม่โดยไม่สูญเสียคุณภาพ)

เหมือนที่พวกเขาพูดใน http://newsgroup.xnview.com/viewtopic.php?t=1420 :

ในการทำเช่นนี้คุณเลือกรูปภาพทั้งหมดของคุณและเลือก "เครื่องมือ> JPG Lossless tranformations" (หรือรายการแบบเลื่อนของสัญลักษณ์ 'JPG lossless transform' ในแถบเครื่องมือ) ในกล่องโต้ตอบให้ตรวจสอบปุ่มด้วย "EXIF" บนมันจากนั้นกด "ไป" XnView จะหมุนรูปภาพอย่างถาวรตามธงการวางแนว EXIF ​​'

และในครั้งต่อไปหากคุณมี gopro มากพอคุณอาจต้องการตรวจสอบคุณสมบัติของมันเช่นกัน: https://gopro.com/support/articles/what-is-auto-image-rotation


GoPro บันทึกข้อมูลการปฐมนิเทศ EXIF ​​ที่ถูกต้องจริงหรือไม่ Hero4 / Session มีเซ็นเซอร์ปรับทิศทาง แต่ฉันไม่คิดว่ารุ่นเก่า ๆ จะทำ
vclaw

4

สมมติว่าภาพถ่ายของคุณอยู่ในรูปแบบ JPEG ฉันค่อนข้างเป็นส่วนหนึ่งของJPEGCropsซึ่งเป็นเครื่องมือที่ง่ายและฟรีสำหรับการประมวลผลภาพเป็นชุดแบบไม่สูญเสีย

คุณสามารถครอบตัดอัตราส่วนกว้างยาวที่เฉพาะเจาะจงและ / หรือหมุน


4

ฉันขอแนะนำโหมดแบตช์ของ Irfanview ซึ่งทำงานบน Windows เท่านั้น Irfanview ยังเหมาะสำหรับการแก้ไขอย่างง่าย ๆ แต่ก็ไม่ใช่ GIMP

เมื่อติดตั้งแล้วให้เลือก "ไฟล์ | การแปลง / เปลี่ยนชื่อแบทช์" จากนั้นจะยุ่งยากเล็กน้อยคุณต้องเลือกไฟล์ทั้งหมดคุณต้องระบุโฟลเดอร์ปลายทางและคุณต้องคลิกที่ปุ่มขั้นสูงเพื่อดูตัวเลือกขั้นสูง มันสามารถหมุนได้ +/- 90 ° แต่ทำ 180 °คุณจะต้องเลือกการหมุนแบบละเอียดที่ด้านขวาสุดและป้อนใน 180 ° โปรดทราบว่าคุณสามารถปรับขนาดได้เปลี่ยนคุณภาพ JPEG และเปลี่ยนชื่อ

คุณสามารถทำได้อย่างรวดเร็วโดยอยู่ใน GUI และใช้แป้นพิมพ์ เปิดไฟล์ใดก็ได้ในโฟลเดอร์รูปภาพ กด 'R' สองครั้งเพื่อหมุนสองครั้ง จากนั้นกด Ctrl-S เพื่อบันทึก สองหน้าต่างจะปรากฏขึ้นหนึ่งในไดอะล็อกไฟล์ทั่วไปของคุณและอีกอันหนึ่งสำหรับการบีบอัด JPEG (หากรูปแบบเริ่มต้นของ GoPro คือ JPEG) ฉันจะทำให้แน่ใจว่าปัจจัยคุณภาพอย่างน้อย 90% จากนั้นบันทึกไฟล์ คุณควรกดปุ่ม Tab หรือ Alt-S เพื่อบันทึก กล่องโต้ตอบชนิด "คุณแน่ใจ" อาจปรากฏขึ้น (อาจปิดได้) จากนั้นเพียงกด Space bar เพื่อไปยังไฟล์ถัดไปในโฟลเดอร์ หากคุณมีมากกว่า 50 ไฟล์แบทช์อาจเร็วกว่านี้ สิบไฟล์ฉันทำตามข้างบน

สิ่งสำคัญสำหรับ Irfanview ก็คือมันเหมือนกับ Blender มันไม่ถามคุณว่าคุณต้องการ Save หรือไม่ถ้าคุณปรับเปลี่ยนรูปภาพ


3
นั่นจะทำให้เกิดการหมุนแบบ lossy - ในขณะที่มันหมุนมันแล้วบันทึก JPEG อีกครั้งดังนั้นคุณจะสูญเสียคุณภาพ ใน IrfanView ควรใช้คุณสมบัติ "JPEG Lossless rotation" (Shift + J) หมายเหตุคุณสามารถใช้มุมมองรูปขนาดย่อเพื่อเลือกรูปภาพทั้งหมดของคุณจากนั้นหมุนทั้งหมดในครั้งเดียว
vclaw

1
@RocketFeathers - Irfanview เป็นเครื่องมือที่ง่ายที่สุดที่จะทำสิ่งนี้โดยไม่สูญเสียในสภาพแวดล้อมของ Windows แต่อย่างที่ vclaw บอกว่ามันดีกว่าที่จะใช้ "JPEG Lossless Rotation" เพื่อทำมัน แก้ไขคำตอบของคุณเพื่อสะท้อนสิ่งนั้นและฉันจะโหวตขึ้นมา
Michael C

"จะไม่ถามคุณว่าคุณต้องการบันทึกหรือไม่ถ้าคุณปรับเปลี่ยนรูปภาพ" - สามารถเปลี่ยนแปลงได้ในตัวเลือก> คุณสมบัติ / การตั้งค่า ... > ขอให้บันทึกการเปลี่ยนแปลงเมื่อออกจากโปรแกรม
MrWhite

3

FSViewerเป็นโปรแกรมที่มีประโยชน์ที่สามารถทำได้

เปิดโฟลเดอร์ที่มีรูปภาพเลือกทั้งหมดที่คุณต้องการหมุนกด F4 แล้วไปที่แท็บ 'แปลงเป็นชุด' ในหน้าต่างที่เปิดขึ้น คลิก 'ตัวเลือกขั้นสูง' ที่ด้านล่างขวาไปที่แท็บ 'หมุน' ทำเครื่องหมาย 'พลิก / หมุน' จากนั้นเลือก 'หมุน' จากนั้นเลือก '180' ด้านล่างแล้วกดตกลง ตั้งค่าตำแหน่งที่คุณต้องการบันทึกและกด 'แปลง'

แก้ไข:วิธีที่รวดเร็วและไม่เจ็บปวดมากขึ้นเพียงเลือกภาพทั้งหมดที่คุณต้องการและกดสองครั้ง 'หมุนไปทางขวาและบันทึก' ในแถบเครื่องมือ ควรเป็นแบบไม่ทำลายสำหรับ JPEG


3

ด้วยหน้าต่างคุณสามารถทำเครื่องหมายทั้งหมดหากอยู่ใน explorer จากนั้นคลิกขวาแล้วเลือกหมุนตามเข็มนาฬิกา ทำสองครั้งแล้วภาพของคุณจะหันไปทางขวา


2

คุณรู้จัก GIMP หรือเปล่า? มีปลั๊กอินที่เรียกว่าBIMPที่ช่วยให้คุณดำเนินการแบบเดียวกันกับชุดรูปภาพโดยใช้ส่วนต่อประสานกราฟิก คุณสามารถติดตั้งได้อย่างง่ายดายโดยใช้โปรแกรมติดตั้งอย่างเป็นทางการสำหรับ Windows

คุณสามารถบันทึกอีกครั้งในรูปแบบอื่นหรือด้วยอัตราส่วนการบีบอัดที่แตกต่างกันเพื่อหลีกเลี่ยงการสูญเสียคุณภาพสูง

เคล็ดลับสำหรับมืออาชีพ: ฉันทำแล้ว: D


2
ฉันคิดว่าคุณตั้งใจจะพูดว่า "คำเตือน" แทนที่จะเป็น "เคล็ดลับ Pro": p แต่ซอฟต์แวร์ที่ยอดเยี่ยม! ฉันต้องการดำเนินการแบบกลุ่มบน GIMP นาน ๆ ครั้งและใช้วิธีเขียนรหัส matlab แทน ฉันจะเก็บเครื่องมือของคุณไว้ในครั้งต่อไป :)
Tasos Papastylianou

1

ImageMagickเป็นชุดเครื่องมือบรรทัดคำสั่งที่ทำงานกับรูปภาพและคุณสามารถรวมเครื่องมือเหล่านั้นเข้ากับคำสั่ง Unix shell พื้นฐานเพื่อใช้คำสั่งเดียวกันกับชุดไฟล์ มีตัวอย่างที่ดีมากมายที่วิธีหมุนรูปภาพทั้งหมดในไดเรกทอรีด้วย imagemagick .


อืม ... และถ้า OP อยู่บน Windows และไม่ได้ใช้ Cygwin ... ? :) อาจต้องการเพิ่ม "และไฟล์แบตช์ของ Windows" หรือขยายคำตอบเพื่อระบุว่า ImageMagick ไม่จำเป็นต้องเป็นโซลูชันของ UNIX เท่านั้น แต่เป็นบรรทัดคำสั่งเดียว
inkista

1
จะลองดูในบ่ายวันนี้ มีไบนารีของ Windows ที่มีอยู่
Johns-305

1

ฉันใช้ Adobe Lightroom เป็นการส่วนตัว สามารถหมุนและแก้ไขภาพเป็นกลุ่มได้อย่างง่ายดายเพียงเลือกภาพที่คุณต้องการหมุนคลิกขวาและเลือกตัวเลือกเพื่อเปลี่ยนรูปภาพโดยหมุน 180 องศา

หากคุณทำงานกับภาพหลายพันภาพอย่างต่อเนื่องที่ต้องใช้การประมวลผลแบบแบทช์โดยเฉพาะอย่างยิ่งหากมันซับซ้อนกว่าการหมุนเช่นการปรับสีหรือการรับแสงแสดงว่า LR อาจเป็นการลงทุนที่มั่นคง

ฉันไม่ชอบ Lightroom ที่เป็นแหล่งปิดใช้จ่ายเงินและจะไม่ทำงานบนระบบ Linux อย่างไรก็ตามฉันพบว่าคุณสมบัติดังกล่าวมีมากกว่าสิ่งที่มีให้ฟรี


0

คุณสามารถใช้ LiveBlox และสร้างไปป์ไลน์เพื่อให้สามารถหมุนภาพได้ รุ่นสาธิตในhttp://liveblox.orgมีบล็อกการหมุนดังนั้นจะอนุญาตให้ทำได้

มีบทช่วยสอนhttps://www.youtube.com/watch?v=kY0e5msQuiU ที่แสดงวิธีการสร้างภาพตัวปรับขนาดแบทช์คุณเพียงแค่ต้องเปลี่ยนขนาดคงที่ด้วยตัวหมุนเพื่อทำการหมุน

นี่จะช่วยให้คุณสามารถทำงานกับภาพแต่ละภาพได้ด้วยคลิกเดียว


-1

$ สำหรับ F in * jpg; อย่าแปลง - แปลง 180 $ F "$ (basename $ F .jpg) _R.jpg" && echo "Done $ F" เสร็จแล้ว

คำอธิบาย: * สำหรับ F ในส่วน. jpgของคำสั่งกำหนดชื่อไฟล์ให้กับตัวแปรซึ่งสามารถเรียกคืนได้ในภายหลังเพื่อเปลี่ยนชื่อไฟล์เป็น[ชื่อไฟล์ดั้งเดิม} _R.jpg

"ทำแปลง -rotate 180"บอกคอมพิวเตอร์ที่คุณต้องการภาพของคุณแปลงโดยการหมุน 180 องศา

ส่วน"$ (basename $ F .jpg) _R.jpg"ของคำสั่งระบุชื่อไฟล์ใหม่

&&บอกคอมพิวเตอร์กว่าคำสั่งเพิ่มเติมมา แต่ที่เครื่องคอมพิวเตอร์ที่ได้รับอนุญาตเท่านั้นที่จะรันคำสั่งถ้า (หมุนและเปลี่ยนชื่อ) คำสั่งก่อนหน้าก็ประสบความสำเร็จ

echo "Done $ F"บอกให้คอมพิวเตอร์บอกคุณ ("echo" ถึงคุณ) ว่าแต่ละไฟล์หมุนได้สำเร็จ $ Fส่วนย่อยของคำสั่งกำลังเรียกคืนตัวแปรชื่อไฟล์เริ่มต้นดังนั้นผลลัพธ์อาจจะพูดอะไรบางอย่างกับผลของ "Done file1.jpg"

และเราต้องการ sh / csh / bash เพื่อให้ชิ้นส่วนนี้ใช้งานได้


5
อาจเป็นไปได้ แต่หากไม่มีคำอธิบายก็ไม่ใช่คำตอบที่ดี โปรดอธิบายว่าการแก้ปัญหานี้ในบริบทใดหากมี
null

1
นี่เป็นการขยายคำตอบของ null โดยใช้ ImageMagick หรือไม่
MikeW

สิ่งนี้ไม่ทำงานอย่างที่คาดไว้หากมี*_R.jpgไฟล์อยู่ในไดเรกทอรีแล้ว
pts

ขอบคุณสำหรับความกระจ่างฉันไม่แน่ใจว่าการติดตั้งเชลล์ UNIX บน windows เป็นวิธีที่ใช้งานได้จริง แต่เป็นวิธีการที่ไม่น้อย
null

แต้มคุณสามารถเปลี่ยน _R.jpg เป็นอะไรก็ได้ที่คุณต้องการ (เช่น "_rotated.jpg") คุณถูกต้องว่านี่จะเป็นปัญหาหากคุณมีไฟล์ _R.jpg อยู่ในไดเรกทอรีแล้ว
ปริญญาเอก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.