PYTHON
Pendahuluan
Dalam tutorial ini, Anda akan belajar bagaimana Anda dapat mengekstrak beberapa metadata yang berguna di dalam gambar menggunakan library Pillow dengan Python. Perangkat seperti kamera digital, smartphone, dan pemindai menggunakan standar EXIF ​​untuk menyimpan gambar atau file audio. Standar ini berisi banyak tag yang berguna untuk mengekstrak yang dapat berguna untuk penyelidikan forensik, seperti merek, model perangkat, tanggal dan waktu yang tepat dari pembuatan gambar, dan bahkan informasi GPS pada beberapa perangkat. Harap dicatat bahwa ada alat gratis untuk mengekstrak metadata seperti ImageMagick atau ExifTool di Linux , tujuan dari tutorial ini adalah untuk mengekstrak metadata dengan bahasa pemrograman Python. Untuk memulai, Anda perlu menginstal perpustakaan pillow.
Install Library Pillow
pip3 install Pillow
Buka file Python baru dan ikuti:
from PIL import Image from PIL.ExifTags import TAGS
Sekarang ini hanya akan bekerja pada file gambar JPEG , ambil gambar apa pun yang Anda ambil dan uji untuk tutorial ini.
# path untuk gambar atau video imagename = "image.jpg" # membaca data gambar menggunakan PIL image = Image.open(imagename)
Kami memuat gambar menggunakan Image.open() metode. Sebelum memanggil getexif() fungsi, perpustakaan pillow memiliki beberapa atribut pada objek gambar, mari kita cetak:
# ekstrak metadata dasar lainnya info_dict = { "Filename": image.filename, "Image Size": image.size, "Image Height": image.height, "Image Width": image.width, "Image Format": image.format, "Image Mode": image.mode, "Image is Animated": getattr(image, "is_animated", False), "Frames in Image": getattr(image, "n_frames", 1) } for label,value in info_dict.items(): print(f"{label:25}: {value}")
Sekarang mari kita panggil getexif() metode pada gambar yang mengembalikan metadata gambar:
# ekstrak data EXIF exifdata = image.getexif()
Masalah dengan exifdata variabel sekarang adalah bahwa nama bidang hanyalah ID, bukan nama bidang yang dapat dibaca manusia, itu sebabnya kita memerlukan kamus TAGS dari modul PIL.ExifTags yang memetakan setiap ID tag menjadi teks yang dapat dibaca manusia:
# mengulangi semua bidang data EXIF for tag_id in exifdata: # dapatkan nama tag, alih-alih id tag manusia yang tidak dapat dibaca tag = TAGS.get(tag_id, tag_id) data = exifdata.get(tag_id) # memecahkan kode byte if isinstance(data, bytes): data = data.decode() print(f"{tag:25}: {data}")
Inilah keluaran saya:
Filename : .\image.jpg Image Size : (5312, 2988) Image Height : 2988 Image Width : 5312 Image Format : JPEG Image Mode : RGB Image is Animated : False Frames in Image : 1 ExifVersion : 0220 ShutterSpeedValue : 4.32 ApertureValue : 1.85 DateTimeOriginal : 2016:11:10 19:33:22 DateTimeDigitized : 2016:11:10 19:33:22 BrightnessValue : -1.57 ExposureBiasValue : 0.0 MaxApertureValue : 1.85 MeteringMode : 3 Flash : 0 FocalLength : 4.3 ColorSpace : 1 ExifImageWidth : 5312 FocalLengthIn35mmFilm : 28 SceneCaptureType : 0 ImageWidth : 5312 ExifImageHeight : 2988 ImageLength : 2988 Make : samsung Model : SM-G920F Orientation : 1 YCbCrPositioning : 1 XResolution : 72.0 YResolution : 72.0 ImageUniqueID : A16LLIC08SM A16LLIL02GM ExposureProgram : 2 ISOSpeedRatings : 640 ResolutionUnit : 2 ExposureMode : 0 FlashPixVersion : 0100 WhiteBalance : 0 Software : G920FXXS4DPI4 DateTime : 2016:11:10 19:33:22 ExifOffset : 226 MakerNote : 0100 Z@P UserComment : ExposureTime : 0.05 FNumber : 1.9
Banyak hal yang berguna, dengan cepat googling Model, saya menyimpulkan bahwa gambar ini diambil oleh Samsung Galaxy S6, jalankan ini pada gambar yang diambil oleh perangkat lain dan Anda akan melihat bidang yang berbeda (mungkin lebih). Baiklah, kita sudah selesai. Semoga bermanfaat!
Sumber asli : thepythoncode
0 Komentar