All Tools / Blog / Como Extrair Dados EXIF de uma Foto

Como Extrair Dados EXIF de uma Foto

4 min read

Toda foto tirada com uma câmera digital ou smartphone contém metadados ocultos chamados dados EXIF. Eles registram o modelo da câmera, velocidade do obturador, abertura, ISO, comprimento focal, o horário exato em que a foto foi tirada e — se os serviços de localização estavam ativos — coordenadas GPS com precisão de alguns metros.

Veja como lê-los.

Como os dados EXIF se parecem

Um JPEG típico de um smartphone contém campos como:

Campo Valor de exemplo
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 23° 33' 2" S
GPSLongitude 46° 38' 0" W
Software iOS 18.0

As coordenadas GPS neste exemplo apontam para São Paulo. Se você postar uma foto tirada em casa, esses dados EXIF vão junto a menos que você os remova primeiro.

Lendo EXIF no navegador (sem software)

Visualizadores EXIF baseados em navegador analisam a imagem localmente sem enviá-la. Arraste uma foto e a ferramenta exibe todos os metadados incorporados. Sem conta, sem instalação, sem dados enviados a lugar nenhum.

É a opção mais rápida para consultas avulsas — verificar coordenadas de uma foto, confirmar um timestamp ou verificar configurações da câmera.

Lendo EXIF em Python com Pillow

A biblioteca Pillow lê dados EXIF de arquivos JPEG e 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}")

Extraindo coordenadas GPS

Os dados GPS são armazenados em uma estrutura aninhada no EXIF. Veja como decodificá-los em graus decimais:

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

    # Encontrar a tag GPSInfo (número de 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 (linha de comando)

ExifTool de Phil Harvey é o leitor EXIF mais completo disponível. Lida com centenas de formatos — JPEG, TIFF, formatos RAW, vídeo, PDF e mais.

# Instalar
brew install exiftool          # macOS
sudo apt install libimage-exiftool-perl   # Ubuntu/Debian

# Ler todos os metadados de um arquivo
exiftool photo.jpg

# Ler campos específicos
exiftool -DateTimeOriginal -GPSLatitude -GPSLongitude photo.jpg

# Extrair EXIF de todos os JPEGs de uma pasta
exiftool -r /path/to/folder

# Saída como JSON
exiftool -json photo.jpg

# Remover TODOS os metadados (privacidade)
exiftool -all= photo.jpg

Removendo dados EXIF para privacidade

Se você for compartilhar fotos publicamente e não quiser expor coordenadas GPS ou informações do dispositivo:

# ExifTool: remover tudo
exiftool -all= photo.jpg

# Remover mas manter o original (salva backup photo_original)
exiftool -all= -overwrite_original photo.jpg

Em Python com Pillow:

from PIL import Image
import io

def strip_exif(input_path: str, output_path: str):
    img = Image.open(input_path)
    # Cria nova imagem apenas com dados de pixel — sem EXIF
    clean = Image.new(img.mode, img.size)
    clean.putdata(list(img.getdata()))
    clean.save(output_path)

Quais formatos de arquivo têm EXIF?

Formato Suporte EXIF
JPEG Sim — o mais comum
TIFF Sim
PNG Não (usa metadados diferentes: chunks iTXt)
HEIC/HEIF Sim (formato moderno do iPhone)
WebP Limitado (chunk Exif básico)
RAW (CR2, NEF, ARW) Sim — dados extensos da câmera
PDF Sem EXIF (usa metadados XMP)
Vídeo (MP4, MOV) Não EXIF, mas contém hora de criação + GPS em atoms separados

Pontos principais

  • Dados EXIF estão incorporados em arquivos JPEG/TIFF e registram configurações da câmera, timestamps e coordenadas GPS.
  • Ferramentas de navegador processam arquivos localmente — sem upload necessário para fotos sensíveis.
  • Pillow do Python lida com EXIF básico; use ExifTool para extração abrangente em todos os formatos.
  • Coordenadas GPS no EXIF são precisas o suficiente para identificar um endereço residencial — remova antes de compartilhar se a privacidade importar.
  • Arquivos PNG não usam EXIF; procure chunks iTXt ou tEXt em vez disso.