Cómo convertir HEIC a JPG en Ubuntu con 2 comandos
- Instala las herramientas:
sudo apt install libheif-examples - Convierte un archivo:
heif-convert -q 92 photo.heic photo.jpg
Para una carpeta entera, mete el segundo comando en un bucle (consulta la conversión por lotes más abajo). En Fedora el paquete es libheif-tools.
heif-convert (libheif) — la herramienta nativa más rápida
heif-convert es una utilidad de línea de comandos del proyecto libheif — la implementación de referencia del formato HEIF/HEIC. Decodifica archivos HEIC de forma nativa sin depender de delegates de ImageMagick ni de códecs externos. CleverUtils.com usa la misma herramienta en sus servidores: la conversión de HEIC a JPG pasa por heif-convert con calidad 92, y ImageMagick solo se usa cuando la imagen necesita cambios como un redimensionado.
Instalación
Instala las herramientas libheif para tu plataforma:
# Ubuntu / Debian
sudo apt install libheif-examples
# Fedora / RHEL
sudo dnf install libheif-tools
# macOS (Homebrew)
brew install libheif
# Arch Linux
sudo pacman -S libheif
Verifica la instalación:
heif-convert --version
Conversión básica
Convierte un único archivo a JPG con calidad 92:
heif-convert input.heic output.jpg -q 92
La opción -q establece la calidad JPEG (1–100). La calidad 92 es el punto ideal — visualmente idéntica al original HEIC manteniendo un tamaño de archivo razonable.
Conversión por lotes
Convierte cada archivo HEIC del directorio actual:
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
heif-convert "$f" "${f%.*}.jpg" -q 92
done
La protección [ -e "$f" ] || continue maneja el caso en que ningún archivo coincide con uno de los patrones glob (por ejemplo, no existen archivos .HEIC en mayúsculas).
Opciones útiles
| Opción | Descripción |
|---|---|
-q <1-100> | Calidad de salida JPEG. El valor por defecto varía según la build; especifícalo siempre explícitamente. |
--with-exif | Escribe además el bloque EXIF en un archivo .exif aparte. La salida JPG ya contiene los datos EXIF sin esta opción. |
--with-aux | Guarda también las imágenes auxiliares, como los mapas de profundidad, en archivos aparte. |
-C <value> | Establece el método de sobremuestreo de croma: nearest-neighbor, bilinear. |
Consejo: las versiones actuales de heif-convert copian por defecto el bloque EXIF (GPS, cámara, fecha) y el perfil de color en el JPG. Lo comprobamos en nuestro propio servidor con un archivo de prueba tipo iPhone.
ImageMagick — la navaja suiza
ImageMagick es el conjunto de herramientas de procesamiento de imágenes más instalado en servidores Linux. Si tu sistema ya lo tiene, puede que no necesites nada más — las versiones recientes incluyen libheif como delegate para decodificar HEIC. CleverUtils.com usa ImageMagick solo cuando una imagen necesita procesamiento adicional, como redimensionarla o girarla.
Instalación
# Ubuntu / Debian (with HEIC delegate)
sudo apt install imagemagick libheif-dev
# Fedora
sudo dnf install ImageMagick libheif-devel
# macOS
brew install imagemagick
Comprueba que el delegate HEIC está disponible:
magick identify -list format | grep -i heic
Si HEIC aparece en la salida, ImageMagick puede leer tus archivos directamente.
Conversión de un solo archivo
magick convert input.heic -quality 92 output.jpg
O con ImageMagick 7+, la forma más corta:
magick input.heic -quality 92 output.jpg
Conversión por lotes
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
magick "$f" -quality 92 "${f%.*}.jpg"
done
Opciones avanzadas
ImageMagick te permite redimensionar, eliminar metadatos o ajustar el espacio de color en el mismo comando:
# Convert and resize to max 2048px on the longest side
magick input.heic -quality 92 -resize 2048x2048\> output.jpg
# Convert and strip all metadata
magick input.heic -quality 92 -strip output.jpg
# Convert with specific colorspace
magick input.heic -quality 92 -colorspace sRGB output.jpg
FFmpeg — para flujos orientados a vídeo
FFmpeg es principalmente una herramienta de vídeo, pero puede decodificar archivos HEIC si se compiló con soporte HEVC. Resulta cómodo si FFmpeg ya forma parte de tu pipeline y quieres evitar instalar herramientas adicionales.
Instalación
# Ubuntu / Debian
sudo apt install ffmpeg
# Fedora
sudo dnf install ffmpeg-free
# macOS
brew install ffmpeg
Conversión
ffmpeg -i input.heic output.jpg
Para establecer la calidad JPEG (FFmpeg usa una escala de 2–31, donde 2 es la mejor):
ffmpeg -i input.heic -q:v 2 output.jpg
Conversión por lotes
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
ffmpeg -i "$f" -q:v 2 "${f%.*}.jpg" -y
done
La opción -y sobrescribe los archivos de salida existentes sin preguntar.
Nota: el soporte HEIC de FFmpeg depende de cómo se compiló. Algunos paquetes de distribución Linux (por ejemplo ffmpeg-free en Fedora) pueden carecer de decodificación HEVC por motivos de patentes. Si obtienes un error de decodificador, usa heif-convert o ImageMagick en su lugar.
Python — pillow-heif + Pillow
Para desarrolladores que necesitan convertir HEIC dentro de una aplicación o script Python, la biblioteca pillow-heif añade soporte HEIC a Pillow (PIL). Es útil para integrar la conversión en pipelines de datos, backends web o scripts de automatización.
Instalación
pip install pillow-heif Pillow
Conversión de un solo archivo
from pillow_heif import register_heif_opener
from PIL import Image
register_heif_opener()
img = Image.open("input.heic")
img.save("output.jpg", "JPEG", quality=92)
Script de conversión por lotes
import os
from pathlib import Path
from pillow_heif import register_heif_opener
from PIL import Image
register_heif_opener()
input_dir = Path("./photos")
output_dir = Path("./converted")
output_dir.mkdir(exist_ok=True)
for heic_file in input_dir.glob("*.heic"):
img = Image.open(heic_file)
jpg_path = output_dir / f"{heic_file.stem}.jpg"
img.save(jpg_path, "JPEG", quality=92)
print(f"Converted: {heic_file.name} -> {jpg_path.name}")
Preservar los datos EXIF
from pillow_heif import register_heif_opener
from PIL import Image
register_heif_opener()
img = Image.open("input.heic")
exif_data = img.info.get("exif", b"")
img.save("output.jpg", "JPEG", quality=92, exif=exif_data)
El parámetro exif pasa los bytes EXIF sin procesar a la salida JPG, conservando ajustes de cámara, coordenadas GPS y marcas de tiempo.
Terminal de macOS — sips (integrado)
macOS incluye sips (Scriptable Image Processing System) de serie. Admite HEIC de forma nativa porque macOS incorpora el códec HEVC. No requiere instalación.
Conversión de un solo archivo
sips -s format jpeg input.heic --out output.jpg
Conversión por lotes
mkdir -p converted
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
sips -s format jpeg "$f" --out "converted/${f%.*}.jpg"
done
Nota: en nuestra prueba, sips conservó los datos EXIF (cámara, fecha, GPS) y el perfil Display P3 al convertir HEIC a JPEG. Mantiene la etiqueta de orientación en lugar de girar los píxeles.
PowerShell (Windows) — bucle de ImageMagick
En Windows, ImageMagick ofrece la opción de línea de comandos más fiable. Una vez instalado, puedes usar PowerShell para convertir por lotes:
Instalación
- Descarga el instalador de Windows desde
imagemagick.org/script/download.php(elige «Win64 dynamic»). - Ejecuta el instalador y marca «Add application directory to your system path».
- Abre una nueva ventana de PowerShell y verifica:
magick --version
Archivo único
magick convert photo.heic -quality 92 photo.jpg
Conversión por lotes
Get-ChildItem *.heic | ForEach-Object {
magick convert $_.FullName -quality 92 ($_.DirectoryName + "\" + $_.BaseName + ".jpg")
}
Esto convierte cada archivo .heic de la carpeta actual a JPG con calidad 92. Los archivos originales permanecen intactos.
Comparación de herramientas
| Herramienta | Plataformas | Lotes | Ctrl calidad | EXIF | Velocidad* |
|---|---|---|---|---|---|
| heif-convert | Linux, macOS | Sí | -q 1-100 | Por defecto | ~0,3 s / archivo |
| ImageMagick | Linux, macOS, Win | Sí | -quality | Por defecto | ~0,5 s / archivo |
| FFmpeg | Linux, macOS, Win | Sí | -q:v 2-31 | No | ~0,6 s / archivo |
| Python | Linux, macOS, Win | Sí | quality= | Manual | ~0,8 s / archivo |
| sips | solo macOS | Sí | Limitado | Conservado | ~0,4 s / archivo |
| PowerShell | Windows | Sí | -quality | Por defecto | ~0,5 s / archivo |
*Tiempos aproximados para una foto de iPhone 12 MP (4032 × 3024) en hardware moderno. La velocidad real varía según CPU, E/S de disco y complejidad de la imagen.
Ajustes de calidad explicados
Cada herramienta utiliza una escala de calidad distinta. Así es como obtener resultados equivalentes entre herramientas:
| Calidad objetivo | heif-convert / IM | FFmpeg (-q:v) | Python (Pillow) |
|---|---|---|---|
| Máxima | -q 100 |
-q:v 2 |
quality=100 |
| Óptima (CleverUtils) | -q 92 |
-q:v 3 |
quality=92 |
| Buena | -q 85 |
-q:v 5 |
quality=85 |
| Optimizada para web | -q 75 |
-q:v 8 |
quality=75 |
¿Por qué calidad 92? Es el ajuste que CleverUtils.com usa en producción. A 92, el JPG convertido es visualmente idéntico al original HEIC en condiciones normales de visualización. Subir más hace que los archivos sean notablemente más grandes con poca ganancia visible. Por debajo de 85, los artefactos de compresión se hacen visibles en los degradados del cielo y en las texturas finas.
¿No quieres usar la línea de comandos?
Si prefieres saltarte la instalación de herramientas, la configuración de delegates y los bucles de shell — el widget de conversión al principio de esta página hace lo mismo en tu navegador. Sube un archivo HEIC y recibe un JPG en segundos. CleverUtils.com ejecuta heif-convert en sus servidores con calidad 92, así que el resultado coincide con el primer método de este artículo.
Cómo abrir y ver archivos HEIC en Linux
- Visores de imágenes (Eye of GNOME, gThumb): instala el paquete
heif-gdk-pixbufpara que los visores basados en GTK puedan abrir HEIC. - GIMP: la versión 2.10.2 y posteriores abren archivos HEIC directamente.
- Miniaturas en el gestor de archivos: el paquete
heif-thumbnailerañade miniaturas HEIC. - Sin permiso para instalar: convierte el archivo con el conversor de arriba y abre el JPG.