BigTIFF: TIFF Sin el Límite de 4 GB
¿Qué es BigTIFF?
BigTIFF es una extensión del clásico TIFF (Tagged Image File Format) que elimina la restricción más severa del formato original de 1992: el límite de tamaño de archivo de 4 GB. Mientras que el TIFF ordinario usa desplazamientos de archivo de 32 bits — limitando cualquier archivo individual a 2^32 = 4.294.967.296 bytes (~4 GB) — BigTIFF usa desplazamientos de 64 bits, permitiendo archivos de imagen individuales de hasta 18 exabytes (2^64 bytes) en teoría.
Los archivos BigTIFF usan la misma extensión .tif o .tiff que el TIFF estándar, pero pueden distinguirse por sus bytes mágicos: el TIFF clásico comienza con 49 49 2A 00 (little-endian) o 4D 4D 00 2A (big-endian), mientras que BigTIFF comienza con 49 49 2B 00 (little-endian) o 4D 4D 00 2B (big-endian) — el campo de versión cambia de 0x002A (42) a 0x002B (43).
Por Qué 4 GB Ya No Es Suficiente
La especificación TIFF 6.0 original (1992) fue diseñada cuando 4 GB parecía imposiblemente grande. Hoy, varios casos de uso comunes superan rutinariamente este límite:
- Imágenes de portaobjetos de patología completa: Una sola lámina de vidrio digitalizada a 40× aumentos puede producir un TIFF de 3–15 GB (típico: 100.000 × 80.000 píxeles a 24 bits RGB = ~23 GB sin comprimir)
- Imágenes de satélite y aéreas: Los mosaicos orto completos son rutinariamente de 10–50 GB
- Escaneo de documentos de gran formato: Un plano técnico A0 escaneado a 600 DPI × color de 24 bits = ~4,6 GB sin comprimir
- Pilas Z de microscopía: La microscopía de fluorescencia con 100+ cortes Z a 16 bits de profundidad en múltiples canales alcanza fácilmente 20+ GB por adquisición
- Mosaicos GeoTIFF: Rásteres de terreno a nivel de país (DEM a 30 m para América del Norte = múltiples terabytes)
Diferencias de Estructura Interna
| Característica | TIFF clásico | BigTIFF |
|---|---|---|
| Bytes mágicos (LE) | 49 49 2A 00 |
49 49 2B 00 |
| Campo de versión | 42 (0x002A) | 43 (0x002B) |
| Tamaño de desplazamiento | 32 bits (4 bytes) | 64 bits (8 bytes) |
| Tamaño máximo de archivo | ~4 GB | ~18 EB |
BigTIFF preserva todo el ecosistema de etiquetas TIFF — todas las etiquetas TIFF existentes, incluidas las etiquetas GeoTIFF para metadatos CRS/proyección, funcionan de forma idéntica. Solo cambia la aritmética de desplazamientos.
GeoTIFF Optimizado para la Nube (COG) y BigTIFF
Cloud-Optimized GeoTIFF (COG) es una convención de diseño compatible con BigTIFF que permite acceso eficiente mediante solicitudes de rango HTTP a archivos remotos sin descargar el archivo completo:
- Niveles de vista general (pirámide) almacenados primero (resolución más pequeña arriba)
- Teselas (normalmente 256×256 o 512×512) en lugar de tiras — los bytes de tesela son contiguos
- Un comando estándar de
gdal_translatecrea COGs:
gdal_translate entrada.tif salida_cog.tif \
-co TILED=YES \
-co COMPRESS=DEFLATE \
-co COPY_SRC_OVERVIEWS=YES \
-co BIGTIFF=IF_NEEDED
COG + BigTIFF es el estándar para flujos de trabajo geoespaciales nativos en la nube (AWS, GCS, Azure Blob Storage con el sistema de archivos virtual /vsicurl/ de GDAL).
Leer BigTIFF con Python
GDAL / rasterio (recomendado para geoespacial)
import rasterio
with rasterio.open('ortofo_grande.tif') as src:
print(src.profile)
print(src.width, src.height)
# Leer solo una región con ventana (evita cargar la imagen completa)
from rasterio.windows import Window
ventana = Window(col_off=0, row_off=0, width=1024, height=1024)
datos = src.read([1, 2, 3], window=ventana) # forma: (3, 1024, 1024)
tifffile (transparente para TIFF y BigTIFF)
import tifffile
with tifffile.TiffFile('portaobjetos_patologia.tif') as tif:
print(tif.is_bigtiff) # True
print(tif.pages[0].shape) # (altura, anchura, canales)
# Acceder a niveles de pirámide (si están presentes)
for nivel, serie in enumerate(tif.series[0].levels):
print(f"Nivel {nivel}: {serie.shape}")
Crear Archivos BigTIFF
GDAL
# Convertir GeoTIFF existente a BigTIFF con teselas y compresión LZW
gdal_translate entrada.tif salida.tif \
-co BIGTIFF=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=LZW \
-co PREDICTOR=2
# BIGTIFF=IF_NEEDED cambia automáticamente a BigTIFF cuando la salida > 4 GB
gdal_translate entrada.tif salida.tif -co BIGTIFF=IF_NEEDED
Python rasterio
import rasterio
perfil = {
'driver': 'GTiff',
'dtype': 'uint8',
'width': 150000,
'height': 120000,
'count': 3,
'compress': 'lzw',
'tiled': True,
'blockxsize': 512,
'blockysize': 512,
'bigtiff': 'yes', # indicador clave de BigTIFF
}
with rasterio.open('orto_mundo.tif', 'w', **perfil) as dst:
dst.write(banda1, 1)
dst.write(banda2, 2)
dst.write(banda3, 3)
Opciones de Compresión en BigTIFF
BigTIFF hereda todos los tipos de compresión TIFF:
| Compresión | Mejor para |
|---|---|
| LZW | Uso general; predictor=2 para tono continuo |
| DEFLATE (ZIP) | Ratio ligeramente mejor que LZW |
| ZSTD | Rápido + buen ratio (GDAL 2.3+) |
| LZ4 | Descompresión más rápida |
| LERC | Rásteres científicos en punto flotante |
| JPEG | Imágenes RGB con pérdida (usar con precaución) |
Para datos científicos en punto flotante (elevación, temperatura, intensidad SAR), usa DEFLATE o ZSTD con PREDICTOR=3 (predictor de punto flotante).
Consejos Prácticos
- Usa siempre teselas (
TILED=YES, bloques de 256×256 o 512×512) — el BigTIFF basado en tiras es prácticamente inutilizable para archivos grandes - Construye vistas generales antes de almacenar:
gdaladdo -r average salida.tif 2 4 8 16 32 64 - Usa
BIGTIFF=IF_NEEDEDen GDAL en lugar de forzar siempre BigTIFF — se activa automáticamente solo cuando es necesario y evita problemas de compatibilidad - Verifica BigTIFF con
tiffinfo: busca "BigTIFF" en la primera línea de salida - No todo el software lee BigTIFF: Photoshop (con soporte limitado), algunos visores GIS más antiguos y muchas aplicaciones integradas solo soportan TIFF clásico. Prueba con el software del destinatario antes de enviar
- COG es el estándar en la nube: para cualquier archivo al que se acceda remotamente, genera una distribución Cloud-Optimized GeoTIFF
Los desplazamientos de 64 bits de BigTIFF desbloquean el rico ecosistema de etiquetas TIFF — incluidos los metadatos CRS/proyección completos de GeoTIFF — para la era de conjuntos de datos de imágenes de múltiples gigabytes a terabytes.
Conversiones relacionadas
Lo más habitual al trabajar con imágenes son estas direcciones de conversión: