Dalam tutorial ini, kita akan belajar bagaimana dapat mengekstrak beberapa metadata yang berguna dalam gambar menggunakan PHP.
Perangkat seperti kamera digital dan smartphone memiliki informasi dasar data untuk menyimpan gambar atau file audio. Kita akan menggunakan fungsi exif_read_data() dari php yang dapat membaca banyak tag yang berguna untuk mengekstrak yang dapat berguna untuk penyelidikan forensik, seperti merek, model perangkat, tanggal dan waktu pembuatan gambar yang tepat, dan bahkan informasi GPS pada beberapa perangkat.
Harap dicatat bahwa ada tools gratis untuk mengekstrak metadata seperti ImageMagick atau ExifTool di Linux dan klik kanan pilih propertis pada bagian tab Detail di Micorsoft Windows, tujuan dari tutorial ini adalah untuk mengekstrak metadata dengan bahasa pemrograman PHP.
Prasyarat
Pastikan modul php EXIF sudah aktif. Cara mengeceknya dapat melihat pada info php.
Mulai
Untuk memulai, kita perlu membuat sebuah file metadatagambar.php dengan pengkodean seperti berikut:
<?php $exif = exif_read_data('contohgambar.jpg', 0, true); echo "contohgambar.jpg:"; foreach ($exif as $key => $section) { foreach ($section as $name => $val) { echo $key.$name." : ".$val."<br>"; } } ?>
Kemudian simpan dan panggil dari browser untuk melihat semua list tag data yang ada, contoh hasilnya seperti ini :
contohgambar.jpg: FILE.FileName: contohgambar.jpg FILE.FileDateTime: 1656923562 FILE.FileSize: 2081782 FILE.FileType: 2 FILE.MimeType: image/jpeg FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS COMPUTED.html: width="4032" height="3024" COMPUTED.Height: 3024 COMPUTED.Width: 4032 COMPUTED.IsColor: 1 COMPUTED.ByteOrderMotorola: 1 COMPUTED.ApertureFNumber: f/2.2 COMPUTED.Thumbnail.FileType: 2 COMPUTED.Thumbnail.MimeType: image/jpeg IFD0.Make: Apple IFD0.Model: iPhone 6s IFD0.Orientation: 6 IFD0.XResolution: 72/1 IFD0.YResolution: 72/1 IFD0.ResolutionUnit: 2 IFD0.Software: 15.5 IFD0.DateTime: 2022:07:04 15:30:35 IFD0.HostComputer: iPhone 6s IFD0.YCbCrPositioning: 1 IFD0.Exif_IFD_Pointer: 226 IFD0.GPS_IFD_Pointer: 1986 THUMBNAIL.Compression: 6 THUMBNAIL.XResolution: 72/1 THUMBNAIL.YResolution: 72/1 THUMBNAIL.ResolutionUnit: 2 THUMBNAIL.JPEGInterchangeFormat: 2354 THUMBNAIL.JPEGInterchangeFormatLength: 9878 EXIF.ExposureTime: 1/33 EXIF.FNumber: 11/5 EXIF.ExposureProgram: 2 EXIF.ISOSpeedRatings: 100 EXIF.ExifVersion: 0232 EXIF.DateTimeOriginal: 2022:07:04 15:30:35 EXIF.DateTimeDigitized: 2022:07:04 15:30:35 EXIF.UndefinedTag:0x9010: +07:00 EXIF.UndefinedTag:0x9011: +07:00 EXIF.UndefinedTag:0x9012: +07:00 EXIF.ComponentsConfiguration: EXIF.ShutterSpeedValue: 69421/13721 EXIF.ApertureValue: 185611/81587 EXIF.BrightnessValue: 80828/29655 EXIF.ExposureBiasValue: 0/1 EXIF.MeteringMode: 5 EXIF.Flash: 16 EXIF.FocalLength: 83/20 EXIF.SubjectLocation: Array EXIF.MakerNote: Apple iOS EXIF.SubSecTimeOriginal: 496 EXIF.SubSecTimeDigitized: 496 EXIF.FlashPixVersion: 0100 EXIF.ColorSpace: 1 EXIF.ExifImageWidth: 4032 EXIF.ExifImageLength: 3024 EXIF.SensingMethod: 2 EXIF.SceneType: EXIF.ExposureMode: 0 EXIF.WhiteBalance: 0 EXIF.FocalLengthIn35mmFilm: 29 EXIF.SceneCaptureType: 0 EXIF.UndefinedTag:0xA432: Array EXIF.UndefinedTag:0xA433: Apple EXIF.UndefinedTag:0xA434: iPhone 6s back camera 4.15mm f/2.2 GPS.GPSLatitudeRef: S GPS.GPSLatitude: Array GPS.GPSLongitudeRef: E GPS.GPSLongitude: Array GPS.GPSAltitudeRef: GPS.GPSAltitude: 75121/6929 GPS.GPSSpeedRef: K GPS.GPSSpeed: 0/1 GPS.GPSImgDirectionRef: M GPS.GPSImgDirection: 2887328/8191 GPS.GPSDestBearingRef: M GPS.GPSDestBearing: 2887328/8191 GPS.GPSDateStamp: 2022:07:04 GPS.UndefinedTag:0x001F: 1414/1
Filter Group Data
Jika kita ingin mengambil hanya satu group informasi atau kategori tag nya, kita dapat memberikan kondisi pada key group yang ingin kita ambil datanya. Misalnya kita ingin mengambil grouping data GPS dapat membuat kondisi seperti berikut:
<?php $exif = exif_read_data('contohgambar.jpg', 0, true); echo "contohgambar.jpg:"; foreach ($exif as $key => $section) { foreach ($section as $name => $val) { if($key == 'GPS'){ echo $key.$name." : ".$val."<br>"; } } } ?>
Maka hasil data yang didapat adalah data yang sudah digrouping hanya group data GPS.
Kesimpulan
Kita sudah berhasil mengekstrak metadata dari file gambar dengan menggunakan PHP. Sebagai catatan perlu diketahui untuk versi php yang mendukung fungsi exif_read_data() adalah minimal versi 7.2. Refrensi jika anda ingin mengupgrade versi PHP ke yang terbaru saat ini adalah PHP8.1 dapat melihat klik disini.
Terima kasih atas waktunya. Jika anda menghadapi masalah atau saran, silakan tinggalkan komentar di bawah.
Mantap
semangat bang
apaan sih jenengan