Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

Kenapa Gambar-Gambar di Ponsel Saya Terputar di Desktop?

by
Read Time:5 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Husain Ali Yahya (you can also view the original English article)

Suatu hari, teman saya ingin mengirim beberapa gambar pada saya untuk mengetes algoritma milik saya. Algoritmanya bekerja dengan baik, and semua dapat berjalan. Namun, saat menganalisis hasilnya, saya melihat bahwa beberaoa gambar telah terputar!

Saya benar-benar tidak dapat memahami alasannya. Tidak ada satupun di algoritma saya yang melakukan rotasi, dan ini cukup aneh. Untungnya saya akhirnya mengetahui alasan mengapa ini terjadi, dan pada kiriman kali ini saya akan membawa kalian ke langkah-langkah yang bisa dilakukan pada gambar yang terputar secara aneh menggunakan Python.

Mari Mulai!

Data EXIF

Pernahkan kamu berpikir mengenai apa yang terjadi saat kamu mengambil gambar dengan kamera ponselmu? Pada kasus ini, kamera-nya akan menulis gambar-nya ke dalam berkas gambar, sementara pada saat yang bersamaan memasukkan informasi lainnya yang disebut metadata; singkatnya, ini adalah data mengenai data. Contohnya, gambar kita dianggap sebagai data. Metadata bisa jadi waktu saat gambar diambil.

Metadata ditulis ke dalam berkas gambar menggunakan Exchangeable image file format (Exif). Banyak tag metadata menarik akan dimasukkan ke dalam gambarmu, seperti make and model dari ponsel yang digunakan untuk mengambil gambar, di samping aneka tag lainnya yang lebih menarik! Oleh karenanya, metadata bisa berisi informasi berharga mengenai gambarmu.

Jika kamu ingin mengetahui lebih dalam mengenai data Exif, Camera and Imaging Product Association (CIPA) dan Information Technology Industries Association (JEITA) telah memfomulasikan standarnya bersama: CIPA DC- 008-Translation Exchangeable image file format for digital still cameras: Exif Version 2.3.

Membaca Metadata

Sekarang kita tahu apa yang dimaksud metada, mari kita lanjutkan dan membaca beberapa tag metadata dari gambar kita. Untuk keperluan panduan ini, saya menggunakan gambar di bawah yang diambil menggunakan kamera ponsel. Gambar orisinalnya dapat diunduh dari toy.jpg.

Reading MetadataReading MetadataReading Metadata

Seperti yang disebutkan di atas, aneka tag metadata berbeda akan dimasukkan ke dalam gambarnya. Mari tulis sebuah skrip Python yang bisa mengambil informasi dari beberapa tag metadata dari gambar di atas. Untuk informasinya, mari katakan kita ingin tahu mengenai make dan model dari ponsel di mana gambar diambil, dan status flash saat gambar diambil. Untuk itu, kita akan menggunakan modul ExifTags yang merupakan bagian dari Python Imaging Library (PIL).

Saya akan menulis skrip Python-nya terlebih dahulu, dan membahas kode-nya langkah demi langkah.

Hal pertama yang kita lakukan ada mengimpor clas Image dan TAGS. Class Image digunakan untuk mewakilkan sebuah PIL gambar, sementara class TAGS, seperti yang disebut dalam dokumentasinya, memetakan 16-bit integer EXIF tag enumerations ke nama-nama string deskriptif.

Selanjutnya kita pindah ke pembacaan gambar kita, toy.jpg, dan menggunakan function ._getexif() yang akan mengemalikan sebuah dictionary dari tags dan values-nya. Setelah itu, sebelum mencetak nilai dari tag-nya (key), kita mengecek apakah key tersebut ada dalam gambar sebagai sebuat tag atau tidak.

Jika kamu ingin memiliki daftar dari tags yang tersedia di dalam gambar, kamu bisa menambahkan statement print key di bawah key variable di dalam for-loop nya. Tags lain apa yang bisa kamu lihat setelah menjalankan stament ini?

Mengecek output dari skrip di atas, ini adalah apa yang akan kamu dapatkan dengan menggunakan toy.jpg:

Dari output-nya, kita tahu bahwa ponsel yang digunakan untuk mengambil gambar yang kita lihat adalah samsung dengan model SAMSUNG-SM-N920A. Apa maksud dari nilai 0 untuk tag Flash? Jika kita mengacur ke dokumen standar yang terhubung di bagian Exif Data di atas, kita akan melihat bahwa nilai 0 berarti flash tidak digunakan ketika mengambil foto.

Kenapa Gambar-nya Terputar di Desktop Saya?

Mari menuju ke topik utama kita: alasan mengapa kamu terkadang menemukan gambar yang kamu transfer dari kamera ponsel terputar, atau dalam orientasi yang salah. Kita bisa menemukan alasan dari masalah ini dengan menganalisis data Exif dari gambarnya.

Tag metadata yang bisa kita gunakan untuk keperluan ini adalah Orientation, yang, berdasarkan dokumen standar di atas, menunjukkan orientasi gambar dari segi baris dan kolom. Untuk mengecek nilai tag orientation, kita bisa menambahkan statement berikut di ujung skrip di atas:

Statement di atas akan mengembalikan Orientation: 1 yang berdasarkan dokumen standar Exif di atas, nilai 1 berarti:

Baris ke 0 berada di puncak gambar, dan kolom ke 0 berada di sisi kiri visual.

Untuk membuatnya lebih jelas, seperti yang dijelaskan dalam Exif Orientation Tag, deskripsi di atas bisa dibaca sebagai berikut: baris ke 0 dari gambar yang tersimpan adalah bagian teratas dari gambar yang terambil, dan kolom ke 0 dari gambar yang tersimpan adalah sisi kiri dari gambar yang terambil. Dengan kata lain, gambarnya pada dasarnya tidak terputar, jadi kita tidak akan memiliki masalah orientasi ketika mentransfer gambarnya dari ponsel ke desktop. Dokumen JPEG Rotation and EXIF Orientation memberikan penjelasan yang bagus mengenai tag orientasi Exif dan aneka nilainya.

Oleh karenanya, ketika kamu menyadari gambar yang kamu transfer dari ponselmu telah terputar atau memiliki orientasi yang salah, kamu hanya perlu kembali ke tag orientasi Exif dan cek nilai dari gambar tersebut, berdasarkannya kamu bisa memperbaiki orientasi dari gambar yang kamu transfer, dan gambar lainnya yang kamu terima dari orang lain.

Ini sangat menguntungkan ketika kamu menerapkan sebuah algoritma pada banyak gambar yang kamu dapat dari kamera ponsel, dan kamu ingin memastikan bahwa tiap gambar disimpan dengan orientasi yang tepat.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.