All Tools / Blog / Cara Membaca Data EXIF dari Foto

Cara Membaca Data EXIF dari Foto

4 min read

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
PDF 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.