Cara Membaca Data EXIF dari Foto
Setiap foto yang diambil dengan kamera digital atau smartphone menyimpan metadata tersembunyi yang disebut data EXIF. Data ini merekam model kamera, kecepatan rana, aperture, ISO, panjang fokus, waktu pengambilan foto, dan — jika layanan lokasi aktif — koordinat GPS yang akurat hingga beberapa meter.
Begini cara membacanya.
Tampilan data EXIF
JPEG khas dari smartphone memiliki kolom seperti:
| Kolom | Contoh nilai |
|---|---|
| Make | Apple |
| Model | iPhone 15 Pro |
| DateTime | 2025:09:14 14:32:05 |
| ExposureTime | 1/120 |
| FNumber | f/1.8 |
| ISO | 64 |
| FocalLength | 6.86 mm |
| GPSLatitude | 40° 42' 46" N |
| GPSLongitude | 74° 0' 21" W |
| Software | iOS 18.0 |
Koordinat GPS dalam contoh ini mengarah ke Lower Manhattan. Jika Anda memposting foto yang diambil di rumah, data EXIF itu ikut terbawa kecuali dihapus terlebih dahulu.
Membaca EXIF di browser (tanpa software)
Pembaca EXIF berbasis browser memproses gambar secara lokal tanpa mengunggahnya. Seret foto ke dalam alat, dan metadata yang tertanam akan ditampilkan. Tidak perlu akun, tidak ada instalasi, tidak ada data yang dikirim ke mana pun.
Ini adalah opsi tercepat untuk pencarian sekali pakai — memeriksa koordinat foto, mengonfirmasi timestamp, atau memverifikasi pengaturan kamera.
Membaca EXIF di Python dengan Pillow
Pustaka Pillow membaca data EXIF dari file JPEG dan TIFF.
from PIL import Image
from PIL.ExifTags import TAGS
def read_exif(path: str) -> dict:
img = Image.open(path)
raw_exif = img._getexif()
if not raw_exif:
return {}
return {TAGS.get(tag, tag): value for tag, value in raw_exif.items()}
exif = read_exif("photo.jpg")
for key, value in exif.items():
print(f"{key}: {value}")
Mengekstrak koordinat GPS
Data GPS disimpan dalam struktur bertingkat di EXIF. Berikut cara menguraikannya ke dalam derajat desimal:
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
def get_gps_coordinates(path: str):
img = Image.open(path)
raw_exif = img._getexif()
if not raw_exif:
return None
# Cari tag GPSInfo (nomor tag 34853)
gps_info = None
for tag, value in raw_exif.items():
if TAGS.get(tag) == "GPSInfo":
gps_info = {GPSTAGS.get(t, t): v for t, v in value.items()}
break
if not gps_info:
return None
def to_decimal(dms, ref):
degrees, minutes, seconds = dms
decimal = float(degrees) + float(minutes) / 60 + float(seconds) / 3600
if ref in ("S", "W"):
decimal = -decimal
return decimal
lat = to_decimal(gps_info["GPSLatitude"], gps_info["GPSLatitudeRef"])
lon = to_decimal(gps_info["GPSLongitude"], gps_info["GPSLongitudeRef"])
return lat, lon
coords = get_gps_coordinates("photo.jpg")
if coords:
lat, lon = coords
print(f"https://maps.google.com/?q={lat},{lon}")
ExifTool (baris perintah)
ExifTool oleh Phil Harvey adalah pembaca EXIF paling komprehensif yang tersedia. Menangani ratusan format — JPEG, TIFF, format RAW, video, PDF, dan lainnya.
# Install
brew install exiftool # macOS
sudo apt install libimage-exiftool-perl # Ubuntu/Debian
# Baca semua metadata dari sebuah file
exiftool photo.jpg
# Baca kolom tertentu
exiftool -DateTimeOriginal -GPSLatitude -GPSLongitude photo.jpg
# Ekstrak EXIF dari semua JPEG dalam folder
exiftool -r /path/to/folder
# Output sebagai JSON
exiftool -json photo.jpg
# Hapus SEMUA metadata (privasi)
exiftool -all= photo.jpg
Menghapus data EXIF untuk privasi
Jika Anda berbagi foto secara publik dan tidak ingin mengekspos koordinat GPS atau info perangkat:
# ExifTool: hapus semuanya
exiftool -all= photo.jpg
# Hapus tapi simpan aslinya (menyimpan cadangan photo_original)
exiftool -all= -overwrite_original photo.jpg
Dengan Python dan Pillow:
from PIL import Image
import io
def strip_exif(input_path: str, output_path: str):
img = Image.open(input_path)
# Buat gambar baru dari data piksel saja — tanpa EXIF
clean = Image.new(img.mode, img.size)
clean.putdata(list(img.getdata()))
clean.save(output_path)
Format file mana yang memiliki EXIF?
| Format | Dukungan EXIF |
|---|---|
| JPEG | Ya — paling umum |
| TIFF | Ya |
| PNG | Tidak (menggunakan metadata berbeda: potongan iTXt) |
| HEIC/HEIF | Ya (format iPhone modern) |
| WebP | Terbatas (potongan Exif dasar) |
| RAW (CR2, NEF, ARW) | Ya — data kamera lengkap |
| Tidak ada EXIF (menggunakan metadata XMP) | |
| Video (MP4, MOV) | Bukan EXIF, tapi berisi waktu pembuatan + GPS di atom terpisah |
Poin utama
- Data EXIF tertanam dalam file JPEG/TIFF dan merekam pengaturan kamera, timestamp, dan koordinat GPS.
- Alat browser memproses file secara lokal — tidak perlu unggah untuk foto sensitif.
- Pillow Python menangani EXIF dasar; gunakan ExifTool untuk ekstraksi lengkap di semua format.
- Koordinat GPS dalam EXIF cukup akurat untuk mengidentifikasi alamat rumah — hapus sebelum berbagi jika privasi penting.
- File PNG tidak menggunakan EXIF; cari potongan iTXt atau tEXt sebagai gantinya.