Bagaimana cara memutar banyak foto digital sebesar 180 derajat dalam satu operasi?

20

Saya memiliki beberapa ribu gambar yang diambil dengan GoPro yang terbalik.

Saya mencari cara, aplikasi yang benar-benar, yang dapat membalik semuanya, 180 derajat, dalam satu operasi.

Saya telah melihat setiap opsi dalam perangkat lunak GoPro sendiri, tetapi tidak menemukan ini untuk diam saja. Anda dapat memutar sambil membuat video, tetapi saya ingin menyimpan gambar masing-masing.

Saya di Windows.

Johns-305
sumber
Terkait, dan sangat relevan: Apakah rotasi "Windows Photo Viewer" tidak rugi?
scottbb
jpegtran adalah jalan yang harus ditempuh. dapat memutar dan / atau membalik JPEG tanpa kehilangan, dan mudah dipanggil dari skrip karena ini adalah aplikasi CLI.
Sarge Borsch

Jawaban:

31

Saya akan merekomendasikan salah satu aplikasi dari daftar ini di JPEGclub.org , yang mengembangkan dan memelihara perangkat lunak untuk Grup JPEG Independen. Mereka memiliki sepotong kode gratis jpegtranyang disebut yang dapat melakukan beberapa transformasi dasar (seperti rotasi) tanpa meng-encode ulang gambar.

Memutar gambar dengan cara "naif" (render ke bitmap, mengubah orientasi bitmap, dan menyimpan kembali) dapat menghasilkan peningkatan artefak JPEG - dan file yang lebih besar dengan data yang kurang berguna.

Daftar di atas berisi perangkat lunak yang dikenal melakukannya "dengan cara yang benar". Perangkat lunak lain mungkin juga (mungkin menggunakan basis kode yang berbeda), tetapi ImageMagick bukan salah satunya, sayangnya. Namun, pada Agustus 2016, ada 87 opsi berbeda untuk berbagai platform komputasi, termasuk Windows.


Catatan dari komentar: OP menggunakan loop ini berdasarkan jawaban ini:

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

dengan hasil yang bagus.

mattdm
sumber
1
Perhatikan bahwa rotasi lossless hanya berfungsi jika setiap dimensi dari setiap gambar adalah kelipatan 16 piksel - 8 jika chroma subsampling tidak digunakan. Jika tidak, piksel berlebih akan hilang atau gambar akan diisi dengan garis tepi. Misalnya, 1080 bukan kelipatan 16!
Gnubie
2
Saya kedua rekomendasi jpegtran; bahkan lebih baik, jika Anda peduli untuk menjaga thumbnail dan Orientationtag EXIF konsisten, Anda dapat mempertimbangkan exiftranyang tidak ada di daftar JPEGclub secara tidak bertanggung jawab, tetapi tidak hilang. Perintah saya (di Linux) untuk ini adalah exiftran -i -1 *.jpgatau find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; ini perlu diadaptasi untuk shell Windows.
Toby Speight
@Toby Tambahan yang bagus. Banyak (sebagian besar?) Dari program yang terdaftar juga akan menyimpan dan memperbarui metadata, yang merupakan salah satu alasan saya merekomendasikan salah satunya, bukan hanya jpegtransecara langsung.
mattdm
Terima kasih! Saya menggunakan jpegtran di Windows. Rotate 180 persis seperti yang saya butuhkan. Saya menempatkan perintah batch yang tepat dalam pertanyaan untuk ref di masa depan.
Johns-305
@ Johns-305 Senang saya bisa membantu. Pada pengeditan pertanyaan, lihat meta.photo.stackexchange.com/questions/1601/…
mattdm
9

Anda dapat menggunakan ImageMagick dengan rotateopsi :

convert image.jpg -rotate 180 result.jpg

Anda harus dapat menerapkan perintah ini ke banyak file, tergantung pada lingkungan Anda.

batal
sumber
10
Perhatikan bahwa ini akan memasukkan kembali jpeg, kehilangan kualitas.
mattdm
8

Pada Windows Anda dapat melakukannya tanpa perangkat lunak tambahan dalam operasi DUA. Pilih file yang Anda inginkan diputar dalam file Explorer, klik kanan dan lakukan "putar kanan" (atau kiri) dua kali. Ini akan dilakukan tanpa kehilangan jika gambar memungkinkan (misalnya, dimensi tidak "lucu").

Agent_L
sumber
Apa itu dimensi "lucu"? Mengapa dimensi foto mencegah rotasi tanpa kehilangan?
scottbb
2
Setelah membaca Apakah rotasi "Windows Photo Viewer" tidak rugi? , Saya mengerti sekarang. Kedua dimensi harus merupakan kelipatan dari 8 agar dapat diputar tanpa kehilangan.
scottbb
1
Ini jawaban terbaik. Saya bergabung dengan situs hanya untuk mengungguli ini.
FI12
5

Anda dapat menggunakan xnview pada windows, yang memiliki beberapa proses mode batch dan juga, untuk rotasi gambar yang sederhana, memiliki opsi untuk memutar gambar berdasarkan data exif.

Pilih semua gambar (bahkan yang berorientasi dengan benar! Ini akan tahu mereka sudah berorientasi dengan baik), "putar berdasarkan exif" dan itu akan melakukannya (tanpa menghitung ulang jpg, sehingga tanpa kehilangan kualitas).

Seperti yang mereka katakan di http://newsgroup.xnview.com/viewtopic.php?t=1420 :

Untuk melakukan ini, Anda memilih semua gambar Anda dan pilih "Tools> JPG Lossless tranformations" (atau dropdownlist simbol 'JPG lossless transformations' di toolbar). Dalam dialog periksa tombol dengan "EXIF" di atasnya dan kemudian tekan "Go". XnView akan memutar gambar secara permanen berdasarkan bendera orientasi EXIF.`

Dan untuk waktu berikutnya, jika Anda memiliki GoPro yang cukup baru, Anda mungkin ingin memeriksa fitur itu juga: https://gopro.com/support/articles/what-is-auto-image-rotation

Olivier Dulac
sumber
Apakah GoPro sebenarnya menyimpan data orientasi EXIF ​​yang benar? The Hero4 / Session memiliki sensor orientasi, tapi saya rasa tidak ada model yang lebih tua.
vclaw
4

Dengan asumsi foto Anda dalam format JPEG, saya cukup menyukai JPEGCrops , sebuah alat sederhana dan gratis untuk pemrosesan gambar tanpa kehilangan.

Anda dapat memotong rasio aspek tertentu, dan / atau memutar.

ths
sumber
4

Bolehkah saya menyarankan mode batch Irfanview, yang hanya berjalan pada Windows. Irfanview juga bagus untuk pengeditan sederhana, tetapi ini bukan GIMP.

Setelah terinstal, pilih "File | Batch Conversion / Rename". Dari sana itu menjadi sedikit rumit, Anda harus memilih semua file, Anda perlu menentukan folder tujuan, dan Anda perlu mengklik tombol Advanced untuk melihat opsi Advanced. Ini dapat memutar +/- 90 °, tetapi untuk melakukan 180 ° Anda harus memilih rotasi halus di paling kanan dan masukkan 180 °. Perhatikan bahwa Anda juga dapat mengubah ukurannya, mengubah kualitas JPEG, dan mengganti namanya.

Anda juga dapat melakukannya lebih cepat dengan tetap berada di GUI dan menggunakan keyboard. Buka file apa pun di folder gambar. Tekan 'R' dua kali untuk memutar dua kali. Kemudian tekan Ctrl-S untuk menyimpan. Dua jendela akan muncul, satu dialog file khas Anda, dan yang kedua untuk kompresi JPEG (jika format default GoPro adalah JPEG). Saya akan memastikan Faktor Kualitas setidaknya 90%. Kemudian simpan file tersebut; Anda harus dapat menekan tombol Tab atau Alt-S untuk menyimpan. Dialog tipe "Apakah Anda yakin" mungkin muncul (mungkin dapat mematikannya). Kemudian, cukup tekan Space bar untuk maju ke file berikutnya di folder. Jika Anda memiliki lebih dari 50 file, kumpulan mungkin lebih cepat. Sepuluh file, saya hanya lakukan di atas.

Hal utama untuk Irfanview adalah seperti Blender, itu tidak menanyakan apakah Anda ingin Simpan jika Anda memodifikasi gambar.

RocketFeathers
sumber
3
Itu akan melakukan rotasi lossy - seperti memutar mereka, lalu menyimpan kembali JPEG, sehingga Anda kehilangan kualitas. Di IrfanView, lebih baik menggunakan fitur "Rotasi JPEG Lossless" (Shift + J). Catatan Anda dapat menggunakan tampilan gambar kecil untuk memilih semua gambar Anda, lalu putar semuanya sekaligus.
vclaw
1
@RocketFeathers - Irfanview adalah alat termudah untuk melakukan ini tanpa kehilangan di lingkungan Windows. Tapi seperti yang dikatakan vclaw, jauh lebih baik menggunakan "Rotasi Tanpa-Kehilangan JPEG" untuk melakukannya. Edit jawaban Anda untuk mencerminkannya dan saya akan membatalkannya.
Michael C
"itu tidak menanyakan apakah kamu ingin Simpan jika kamu memodifikasi gambar." - Ini dapat diubah dalam Pilihan> Properti / Pengaturan ...> Minta untuk menyimpan perubahan saat keluar dari program.
MrWhite
3

FSViewer adalah program bermanfaat yang dapat melakukan itu.

Buka folder di mana gambar berada, pilih semua yang ingin Anda putar, tekan F4 dan pergi ke tab 'Batch Convert' di jendela yang terbuka. Klik 'Opsi Lanjutan' di kanan bawah, buka tab 'Putar'. Centang 'Balik / Putar', lalu 'Putar', lalu pilih '180' di bawah dan tekan OK. Tetapkan di mana Anda ingin ini disimpan dan tekan 'Konversi'.

Sunting: cara yang lebih cepat dan lebih tidak menyakitkan hanya dengan memilih semua gambar yang Anda inginkan dan tekan dua kali 'Putar kanan dan simpan' di bilah alat. Seharusnya tidak merusak untuk JPEG.

K. Minkov
sumber
3

Dengan windows Anda dapat menandai semua jika ada di explorer kemudian klik kanan dan pilih rotate searah jarum jam. Lakukan ini dua kali dan gambar Anda sekarang diorientasikan dengan benar.

Arjihad
sumber
2

Apakah Anda kenal GIMP? Ada sebuah plugin bernama BIMP yang memungkinkan Anda melakukan operasi yang sama pada set gambar, menggunakan antarmuka grafis. Anda dapat dengan mudah menginstalnya menggunakan penginstal resmi untuk Windows.

Anda juga dapat menyimpannya kembali dalam format lain atau dengan rasio kompresi berbeda untuk menghindari kehilangan kualitas yang besar.

Kiat pro: Saya berhasil: D

Yang tidak terduga
sumber
2
Saya pikir Anda bermaksud mengatakan "Penafian" daripada "Pro tip": p Tapi perangkat lunak yang hebat! Saya membutuhkan operasi batch pada GIMP sesekali dan terpaksa menulis kode matlab sebagai gantinya. Saya akan mengingat alat Anda untuk waktu berikutnya :)
Tasos Papastylianou
1

ImageMagick adalah seperangkat alat baris perintah yang beroperasi pada gambar, dan Anda dapat menggabungkan alat-alat itu dengan perintah shell Unix dasar untuk menerapkan perintah yang sama ke satu set file. Ada banyak contoh bagus di Cara memutar semua gambar dalam direktori dengan imagemagick? .

Caleb
sumber
Um ... dan jika OP ada di Windows dan tidak menggunakan Cygwin ...? :) Mungkin ingin menambahkan "dan file batch Windows" atau memperluas jawaban untuk menunjukkan ImageMagick belum tentu solusi UNIX saja, hanya satu baris perintah.
inkista
1
Akan mencobanya sore ini. Ada binari Windows yang tersedia.
Johns-305
1

Saya pribadi menggunakan Adobe Lightroom. Gambar dapat dengan mudah diputar dan diedit, cukup pilih gambar yang ingin Anda putar, klik kanan, dan pilih opsi untuk mengubah gambar dengan memutar 180 derajat.

Jika Anda secara konsisten bekerja dengan ribuan gambar yang memerlukan pemrosesan batch, khususnya jika lebih kompleks daripada memutar - seperti menyesuaikan warna atau pencahayaan, maka LR mungkin merupakan investasi yang solid.

Saya tidak suka bahwa Lightroom adalah sumber tertutup, membutuhkan biaya, dan tidak akan berjalan di sistem Linux. Namun, saya telah menemukan bahwa fitur jauh melebihi apa yang tersedia secara gratis.

SB Ph.D.
sumber
0

Anda bisa menggunakan LiveBlox dan membangun saluran pipa untuk memungkinkan rotasi gambar. Versi demo di http://liveblox.org memiliki blok rotasi sehingga akan memungkinkan ini dilakukan.

Ada tutorial https://www.youtube.com/watch?v=kY0e5msQuiU yang menunjukkan cara membuat resizer gambar batch, Anda hanya perlu mengganti ukuran tetap ukuran dengan rotator untuk melakukan rotasi.

Ini akan memungkinkan Anda untuk bekerja pada setiap gambar dengan satu klik.

robby987
sumber
-1

$ untuk F dalam * jpg; lakukan konversi -rotasikan $ 180 "F ($ nama samaran $ F .jpg) _R.jpg" && echo "Selesai $ F"; selesai

Penjelasan: * untuk F dalam bagian .jpg dari perintah memberikan nama file ke variabel, yang dapat dipanggil kemudian untuk mengubah nama file menjadi [nama file asli} _R.jpg

yang "melakukan convert -rotate 180" memberitahu komputer bahwa Anda ingin gambar Anda dikonversi, oleh makhluk diputar 180 derajat.

Bagian "$ (basename $ F .jpg) _R.jpg" dari perintah menunjukkan nama file baru.

The && memberitahu komputer dari perintah tambahan akan datang, tetapi bahwa komputer hanya diperbolehkan untuk mengeksekusi perintah jika sebelumnya (berputar dan mengubah nama) perintah berhasil.

echo "Done $ F" memberi tahu komputer untuk memberi tahu Anda ("echo" kepada Anda) bahwa setiap file telah berhasil diputar. $ F sub-bagian dari perintah memanggil kembali variabel nama file awal, sehingga output mungkin akan mengatakan sesuatu dengan efek "Selesai file1.jpg"

Dan, orang perlu sh / csh / bash untuk bagian ini untuk bekerja.

bluerizlagirl
sumber
5
Itu mungkin berhasil, tetapi tanpa penjelasan, itu bukan jawaban yang baik. Tolong jelaskan dalam konteks apa solusi ini jika berlaku.
null
1
Apakah ini perluasan jawaban nol menggunakan ImageMagick?
MikeW
Ini tidak berfungsi seperti yang diharapkan jika sudah ada *_R.jpgfile di direktori.
Poin
Terima kasih atas klarifikasi, saya tidak yakin jika memasang shell UNIX pada windows adalah pendekatan yang praktis, tetapi ini adalah pendekatan yang tidak kurang.
null
Poin, Anda dapat mengubah _R.jpg menjadi apa pun yang Anda inginkan (seperti "_rotated.jpg"). Anda benar bahwa ini akan bermasalah jika Anda sudah memiliki file _R.jpg di direktori.
SB Ph.D.