Como converter HEIC em JPG no Ubuntu com 2 comandos
- Instale as ferramentas:
sudo apt install libheif-examples - Converta um arquivo:
heif-convert -q 92 photo.heic photo.jpg
Para uma pasta inteira, coloque o segundo comando dentro de um loop (veja Conversão em lote abaixo). No Fedora, o pacote se chama libheif-tools.
heif-convert (libheif) — a ferramenta nativa mais rápida
heif-convert é um utilitário de linha de comando do projeto libheif — a implementação de referência do formato HEIF/HEIC. Ele decodifica arquivos HEIC nativamente sem depender de delegates do ImageMagick nem de codecs externos. O CleverUtils.com usa a mesma ferramenta em seus servidores: a conversão HEIC para JPG passa pelo heif-convert com qualidade 92, e o ImageMagick só entra quando a imagem precisa de edições, como redimensionamento.
Instalação
Instale as ferramentas libheif para sua 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
Verifique a instalação:
heif-convert --version
Conversão básica
Converter um único arquivo em JPG com qualidade 92:
heif-convert input.heic output.jpg -q 92
A flag -q define a qualidade JPEG (1–100). A qualidade 92 é o ponto ideal — visualmente idêntica ao original HEIC, mantendo o tamanho do arquivo razoável.
Conversão em lote
Converter todos os arquivos HEIC do diretório atual:
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
heif-convert "$f" "${f%.*}.jpg" -q 92
done
A proteção [ -e "$f" ] || continue lida com o caso em que nenhum arquivo corresponde a um dos padrões glob (por exemplo, nenhum arquivo .HEIC em maiúsculas existe).
Flags úteis
| Flag | Descrição |
|---|---|
-q <1-100> | Qualidade de saída JPEG. O valor padrão varia conforme o build; sempre especifique explicitamente. |
--with-exif | Grava também o bloco EXIF num arquivo .exif separado. A saída JPG já contém os dados EXIF sem essa flag. |
--with-aux | Salva também as imagens auxiliares, como mapas de profundidade, em arquivos separados. |
-C <value> | Define o método de upsampling de croma: nearest-neighbor, bilinear. |
Dica: as versões atuais do heif-convert copiam por padrão o bloco EXIF (GPS, câmera, data) e o perfil de cor para o JPG. Verificamos isso no nosso próprio servidor com um arquivo de teste no estilo do iPhone.
ImageMagick — o canivete suíço
O ImageMagick é o conjunto de ferramentas de processamento de imagens mais instalado em servidores Linux. Se seu sistema já o possui, talvez você não precise de mais nada — versões recentes incluem libheif como delegate para decodificação HEIC. O CleverUtils.com usa o ImageMagick só quando a imagem precisa de processamento extra, como redimensionar ou girar.
Instalação
# Ubuntu / Debian (with HEIC delegate)
sudo apt install imagemagick libheif-dev
# Fedora
sudo dnf install ImageMagick libheif-devel
# macOS
brew install imagemagick
Verifique se o delegate HEIC está disponível:
magick identify -list format | grep -i heic
Se HEIC aparecer na saída, o ImageMagick pode ler seus arquivos diretamente.
Conversão de arquivo único
magick convert input.heic -quality 92 output.jpg
Ou com o ImageMagick 7+, a forma abreviada:
magick input.heic -quality 92 output.jpg
Conversão em lote
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
magick "$f" -quality 92 "${f%.*}.jpg"
done
Opções avançadas
O ImageMagick permite redimensionar, remover metadados ou ajustar o espaço de cores no mesmo 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 fluxos orientados a vídeo
O FFmpeg é principalmente uma ferramenta de vídeo, mas pode decodificar arquivos HEIC se tiver sido compilado com suporte a HEVC. Isso é conveniente se o FFmpeg já faz parte do seu pipeline e você quer evitar instalar ferramentas adicionais.
Instalação
# Ubuntu / Debian
sudo apt install ffmpeg
# Fedora
sudo dnf install ffmpeg-free
# macOS
brew install ffmpeg
Conversão
ffmpeg -i input.heic output.jpg
Para definir a qualidade JPEG (o FFmpeg usa uma escala de 2–31, onde 2 é a melhor):
ffmpeg -i input.heic -q:v 2 output.jpg
Conversão em lote
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
ffmpeg -i "$f" -q:v 2 "${f%.*}.jpg" -y
done
A flag -y sobrescreve os arquivos de saída existentes sem perguntar.
Observação: o suporte HEIC do FFmpeg depende de como ele foi compilado. Alguns pacotes de distribuições Linux (por exemplo, ffmpeg-free no Fedora) podem não ter decodificação HEVC por questões de patentes. Se obtiver um erro de decodificador, use heif-convert ou ImageMagick.
Python — pillow-heif + Pillow
Para desenvolvedores que precisam converter HEIC dentro de uma aplicação ou script Python, a biblioteca pillow-heif adiciona suporte HEIC ao Pillow (PIL). É útil para integrar a conversão em pipelines de dados, backends web ou scripts de automação.
Instalação
pip install pillow-heif Pillow
Conversão de arquivo único
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 conversão em lote
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}")
Preservando dados 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)
O parâmetro exif repassa os bytes EXIF brutos para a saída JPG, preservando configurações da câmera, coordenadas GPS e carimbos de data/hora.
Terminal do macOS — sips (integrado)
O macOS inclui sips (Scriptable Image Processing System) de fábrica. Ele oferece suporte nativo a HEIC porque o macOS inclui o codec HEVC. Nenhuma instalação é necessária.
Conversão de arquivo único
sips -s format jpeg input.heic --out output.jpg
Conversão em lote
mkdir -p converted
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
sips -s format jpeg "$f" --out "converted/${f%.*}.jpg"
done
Observação: no nosso teste, o sips manteve os dados EXIF (câmera, data, GPS) e o perfil Display P3 ao converter HEIC em JPEG. Ele mantém a tag de orientação em vez de girar os pixels.
PowerShell (Windows) — loop com ImageMagick
No Windows, o ImageMagick oferece a opção de linha de comando mais confiável. Após instalado, você pode usar o PowerShell para converter em lote:
Instalação
- Baixe o instalador para Windows em
imagemagick.org/script/download.php(escolha «Win64 dynamic»). - Execute o instalador e marque «Add application directory to your system path».
- Abra uma nova janela do PowerShell e verifique:
magick --version
Arquivo único
magick convert photo.heic -quality 92 photo.jpg
Conversão em lote
Get-ChildItem *.heic | ForEach-Object {
magick convert $_.FullName -quality 92 ($_.DirectoryName + "\" + $_.BaseName + ".jpg")
}
Isso converte todos os arquivos .heic da pasta atual em JPG com qualidade 92. Os arquivos originais permanecem intactos.
Comparação de ferramentas
| Ferramenta | Plataformas | Lote | Ctrl qualidade | EXIF | Velocidade* |
|---|---|---|---|---|---|
| heif-convert | Linux, macOS | Sim | -q 1-100 | Por padrão | ~0,3 s / arquivo |
| ImageMagick | Linux, macOS, Win | Sim | -quality | Por padrão | ~0,5 s / arquivo |
| FFmpeg | Linux, macOS, Win | Sim | -q:v 2-31 | Não | ~0,6 s / arquivo |
| Python | Linux, macOS, Win | Sim | quality= | Manual | ~0,8 s / arquivo |
| sips | apenas macOS | Sim | Limitada | Mantido | ~0,4 s / arquivo |
| PowerShell | Windows | Sim | -quality | Por padrão | ~0,5 s / arquivo |
*Tempos aproximados para uma foto de iPhone 12 MP (4032 × 3024) em hardware moderno. A velocidade real varia conforme CPU, E/S de disco e complexidade da imagem.
Configurações de qualidade explicadas
Cada ferramenta usa uma escala de qualidade diferente. Veja como obter saída equivalente entre as ferramentas:
| Qualidade alvo | heif-convert / IM | FFmpeg (-q:v) | Python (Pillow) |
|---|---|---|---|
| Máxima | -q 100 |
-q:v 2 |
quality=100 |
| Ótima (CleverUtils) | -q 92 |
-q:v 3 |
quality=92 |
| Boa | -q 85 |
-q:v 5 |
quality=85 |
| Otimizada para web | -q 75 |
-q:v 8 |
quality=75 |
Por que qualidade 92? Esta é a configuração que o CleverUtils.com usa em produção. Em 92, o JPG convertido é visualmente idêntico ao original HEIC em condições normais de visualização. Subir mais deixa os arquivos bem maiores com pouco ganho visível. Abaixo de 85, artefatos de compressão ficam visíveis em gradientes de céu e texturas finas.
Não quer usar a linha de comando?
Se preferir evitar a instalação de ferramentas, a configuração de delegates e a escrita de loops de shell — o widget de conversão no topo desta página faz o mesmo no seu navegador. Envie um arquivo HEIC e receba um JPG em segundos. O CleverUtils.com roda o heif-convert em seus servidores com qualidade 92, então o resultado é igual ao do primeiro método deste artigo.
Como abrir e visualizar arquivos HEIC no Linux
- Visualizadores de imagens (Eye of GNOME, gThumb): instale o pacote
heif-gdk-pixbufpara que os visualizadores baseados em GTK abram HEIC. - GIMP: a versão 2.10.2 e posteriores abrem arquivos HEIC diretamente.
- Miniaturas no gerenciador de arquivos: o pacote
heif-thumbnaileradiciona miniaturas de HEIC. - Sem permissão para instalar: converta o arquivo com o conversor acima e abra o JPG.