HEIF/HEIC: Estándar Moderno de Apple para Imágenes
High Efficiency Image Format (HEIF) es la respuesta de Apple a JPEG—un estándar de contenedor que aprovecha códecs de vídeo modernos (principalmente HEVC/H.265) para lograr una compresión 25–50% mejor que JPEG mientras soporta características avanzadas como transparencia, HDR, mapas de profundidad e imágenes múltiples por archivo. La extensión .heic denota archivos HEIF que contienen HEVC; .heif es más genérico, soportando HEVC u otros códecs (AV1, VP9).
Arquitectura del Contenedor HEIF: Formato Base de Medios ISO
HEIF se basa en ISO Base Media File Format (ISOBMFF)—la misma estructura basada en boxes que MP4. Cada archivo HEIF se compone de boxes (átomos), cada uno con un encabezado de 8 o 16 bytes:
[Tamaño Box: 4 bytes] [Tipo Box: 4 bytes (p.ej., 'ftyp', 'meta')] [Contenido Box]
Boxes esenciales de HEIF:
ftyp(Tipo Archivo): Declara marca de formato (p.ej.,mif1= HEIF con HEVC,heic= HEIC con HEVC), versión y compatibilidadmeta(Metadatos): Contenedor para metadatos de imagen, EXIF, perfiles ICC, espacio de color (CICP) y referencia de imagen primariailoc(Ubicación Item): Mapea IDs de item a extensiones de datos (rangos de bytes donde viven datos de imagen)iinf(Información Item): Lista todos los elementos (imágenes, miniaturas, mapas de profundidad) y sus propiedadesiprp(Propiedades Item): Almacena propiedades compartidas (dimensiones, espacio de color, transformaciones, rotación) referenciadas por items a través de boxes de asociación de propiedadesmdat(Datos Medios): Datos de imagen/vídeo crudo (bitstream HEVC, datos de movimiento, etc.)pitm(Item Primario): Indica qué item es la imagen primaria (mostrada de forma predeterminada)infe(Entrada Información Item): Describe elementos individuales (nombre, tipo, bandera oculta)
Una estructura HEIF simplificada:
ftyp (marca: mif1 / heic)
meta
hdlr (tipo controlador: pict)
iloc (ubicaciones item)
iinf (info item)
iprp (propiedades)
ipco (contenedor propiedades)
ispe (extensiones espaciales imagen: ancho × alto)
colr (espacio de color)
pixi (información píxel: profundidad por canal)
irot (rotación: 0°, 90°, 180°, 270°)
rloc (ubicación relativa)
clap (apertura limpia)
ipma (asociación propiedades item)
pitm (ID item primario)
mdat (bitstream HEVC / datos píxel crudo)
Integración de Códec HEVC: Códec de Vídeo como Motor de Imagen
La fortaleza de compresión de HEIF se deriva de HEVC (H.265)—un códec de vídeo moderno originalmente diseñado para vídeo 4K. HEVC se empaqueta en HEIF como un bitstream, decodificado fotograma a fotograma para producir imágenes fijas.
Codificación HEVC intra-frame (clave para imágenes fijas):
- CTUs (Unidades Árbol Codificación): Bloques de píxeles de 64×64 (vs. 8×8 de JPEG)
- Modos predicción intra: 35 modos angulares + planar (vs. predicción simple DC/AC de JPEG)
- Codificación entropía CABAC: Codificación aritmética adaptativa al contexto; 30–40% mejor que Huffman de JPEG
- Codificación transformación: Tamaños de bloque variados (4×4, 8×8, 16×16, 32×32) adaptados a contenido
- Filtración bucle: Debloqueo + SAO (desplazamiento adaptativo de muestra) para salida más suave
Resultado: Una imagen de 2 MP (~6 MB como JPEG) se comprime a ~2–3 MB como HEIC—igualando o superando el tamaño de PNG sin pérdidas mientras retiene calidad fotográfica.
Transparencia e Imágenes Adicionales: Imágenes Aux y Mapas de Profundidad
HEIF soporta imágenes auxiliares (items aux) más allá de la fotografía primaria:
- Plano alfa: Máscara de transparencia HEVC-encoded separada; almacena box
auxCpor item referenciando el alfa - Mapa de profundidad: Información de disparidad/profundidad para apilamiento de enfoque o reconstrucción 3D
- Imágenes derivadas: Miniaturas, rotaciones alternativas—almacenadas compactamente como referencias a datos CTU compartidos (evitando duplicación)
Ejemplo de metadatos:
<!-- Imagen primaria (ID 1) con alfa asociado (ID 2) y profundidad (ID 3) -->
<primary_item id="1"/>
<auxiliaryImage id="2" type="urn:mpeg:heaac:2015:aux:alpha" for_item_id="1"/>
<auxiliaryImage id="3" type="urn:mpeg:heaac:2015:aux:depth" for_item_id="1"/>
HDR y Espacio de Color: CICP e ICC
HEIF soporta nativamente imágenes HDR (Rango Dinámico Alto) a través de:
- Perfil de color (CICP): Especifica primarios de color (BT.709, DCI-P3, BT.2020), función de transferencia (lineal SDR, PQ, HLG para HDR) y coeficientes de matriz
- Profundidad de bits: SDR de 8 bits, HDR de 10 bits (Rec. 2020 / DCI-P3), o cine de 12 bits
- Perfil ICC: Gestión completa de color (igual que TIFF/JPEG)
Un HEIC con box colr especificando BT.2020 + transferencia PQ señala contenido HDR10; la conversión de tono en el lado de pantalla adapta para pantallas SDR.
Codificación de HEIF: FFmpeg y Herramientas Apple
FFmpeg con libx265:
# HEIC con pérdidas en calidad 28 (0–51, menor = mejor; ~calidad JPEG)
ffmpeg -i foto.jpg -c:v libx265 -crf 28 \
-tag:v hvc1 -f heic foto.heic
# HEIC sin pérdidas
ffmpeg -i foto.png -c:v libx265 -x265-params lossless=1 \
-tag:v hvc1 foto_sin_perdidas.heic
# HDR10 (HEVC de 10 bits → BT.2020 PQ)
ffmpeg -i fuente_hdr.exr -c:v libx265 -x265-params crf=28:colorprim=bt2020:transfer=smpte2084 \
foto_hdr.heic
Herramientas macOS de Apple:
# Convertir JPEG → HEIC (mantiene calidad)
sips -s format heic entrada.jpg --out salida.heic
# Conversión por lotes (automatización app Fotos vía AppleScript)
osascript -e 'tell application "Photos" to export selected to "/ruta/a/carpeta" as HEIC'
Python vía Pillow (requiere libheif del sistema):
from PIL import Image
img = Image.open('foto.jpg')
img.save('salida.heic', format='HEIF', quality=28)
Procesamiento de HEIF en Flujos de Trabajo
Entrega web:
<picture>
<source srcset="foto.heic" type="image/heic">
<source srcset="foto.webp" type="image/webp">
<img src="foto.jpg" alt="Respaldo">
</picture>
Conversión por lotes (Mac):
for file in *.heic; do
ffmpeg -i "$file" -c:v libx265 -crf 26 "${file%.heic}.jpg"
done
Extrayendo metadatos (Python):
from PIL import Image
from PIL.Image import Exif
img = Image.open('foto.heic')
exif = img.getexif()
print(exif.get(271)) # Marca cámara
Comparación: HEIF vs JPEG, PNG, AVIF, WEBP
| Aspecto | HEIF | JPEG | PNG | AVIF | WEBP |
|---|---|---|---|---|---|
| Códec | HEVC (vídeo) | DCT | Deflate | AV1 (vídeo) | VP8/VP9 (vídeo) |
| Compresión | ~50% vs JPEG | Línea base con pérdidas | Sin pérdidas | ~30% vs JPEG | ~25% vs JPEG |
| Tamaño archivo | 2–4 MB (2 MP) | 4–6 MB | 8–12 MB | 2–3 MB | 3–4 MB |
| Transparencia | Sí (plano alfa) | No | Sí | Sí | Sí |
| HDR | Sí (10/12-bit) | No | No | Sí | No |
| Imágenes múltiples | Sí (profundidad, etc.) | No | No | No | No |
| Soporte navegador | Pobre (solo Safari) | Universal | Universal | Solo Chrome/Edge | Chrome/Edge |
| Ecosistema móvil | Nativo (iOS/macOS) | Universal | Universal | Creciente (Android 12+) | Bueno (mayoría de teléfonos) |
| Calificación archivo | Buena (estándar ISOBMFF) | Aceptable (con pérdidas) | Excelente | Desconocida (edad del formato) | Desconocida (edad del formato) |
Cuándo Elegir HEIF
- Ecosistema Apple: Nativo en iOS/macOS; fotos de iPhone por defecto en HEIC
- Imágenes HDR: Fotografía profesional, cine, assets de juegos
- Transparencia + compresión: Combina canal alfa con eficiencia HEVC
- Archivo de archivos: Metadatos profundos, imágenes auxiliares y calidad en forma compacta
- Evitar HEIF si: Entrega web (soporte navegador), dispositivos Android, software heredado (anterior a 2020)
HEIF representa el futuro del almacenamiento de imágenes—combinando avances de códec de vídeo con un contenedor flexible—pero la adopción sigue siendo limitada fuera del ecosistema de Apple.
Conversiones relacionadas
Lo más habitual al trabajar con imágenes son estas direcciones de conversión: