heif-convert (libheif) — lo strumento nativo più veloce
heif-convert è un'utilità da riga di comando del progetto libheif — l'implementazione di riferimento del formato HEIF/HEIC. Decodifica i file HEIC nativamente senza dipendere dai delegate di ImageMagick o da codec esterni. È la stessa libreria che CleverUtils.com usa sui suoi server backend per l'elaborazione HEIC, insieme a ImageMagick per la post-elaborazione.
Installazione
Installa gli strumenti libheif per la tua piattaforma:
# 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 l'installazione:
heif-convert --version
Conversione di base
Converti un singolo file in JPG con qualità 92:
heif-convert input.heic output.jpg -q 92
Il flag -q imposta la qualità JPEG (1–100). La qualità 92 è il punto ideale — visivamente identica all'originale HEIC mantenendo una dimensione del file ragionevole.
Conversione batch
Converti ogni file HEIC nella directory corrente:
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
heif-convert "$f" "${f%.*}.jpg" -q 92
done
La protezione [ -e "$f" ] || continue gestisce il caso in cui nessun file corrisponda a uno dei pattern glob (ad esempio nessun file .HEIC maiuscolo esiste).
Flag utili
| Flag | Descrizione |
|---|---|
-q <1-100> | Qualità di output JPEG. Il valore predefinito varia in base alla build; specificalo sempre esplicitamente. |
--with-exif | Mantiene i metadati EXIF (modello fotocamera, GPS, data/ora) nel file di output. |
-S | Estrae tutte le immagini dalle sequenze multi-immagine (ad esempio Live Photos, raffiche). |
-C <value> | Imposta il metodo di upsampling del croma: nearest-neighbor, bilinear. |
Suggerimento: se i tuoi file HEIC provengono da un iPhone e hai bisogno delle coordinate GPS o delle impostazioni della fotocamera nell'output JPG, includi sempre --with-exif. Senza questo, alcune build di heif-convert scartano silenziosamente i metadati.
ImageMagick — il coltellino svizzero
ImageMagick è il toolkit di elaborazione immagini più diffuso sui server Linux. Se il tuo sistema lo ha già, potresti non aver bisogno di altro — le versioni recenti includono libheif come delegate per la decodifica HEIC. CleverUtils.com usa ImageMagick per la post-elaborazione dopo la conversione (ridimensionamento, regolazione della qualità, gestione dei metadati).
Installazione
# Ubuntu / Debian (with HEIC delegate)
sudo apt install imagemagick libheif-dev
# Fedora
sudo dnf install ImageMagick libheif-devel
# macOS
brew install imagemagick
Verifica che il delegate HEIC sia disponibile:
magick identify -list format | grep -i heic
Se HEIC appare nell'output, ImageMagick può leggere i tuoi file direttamente.
Conversione di un singolo file
magick convert input.heic -quality 92 output.jpg
Oppure con ImageMagick 7+, la forma più breve:
magick input.heic -quality 92 output.jpg
Conversione batch
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
magick "$f" -quality 92 "${f%.*}.jpg"
done
Opzioni avanzate
ImageMagick ti permette di ridimensionare, rimuovere i metadati o regolare lo spazio colore nello stesso 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 — per flussi orientati al video
FFmpeg è principalmente uno strumento video, ma può decodificare file HEIC se compilato con il supporto HEVC. È comodo se FFmpeg è già parte della tua pipeline e vuoi evitare di installare strumenti aggiuntivi.
Installazione
# Ubuntu / Debian
sudo apt install ffmpeg
# Fedora
sudo dnf install ffmpeg-free
# macOS
brew install ffmpeg
Conversione
ffmpeg -i input.heic output.jpg
Per impostare la qualità JPEG (FFmpeg usa una scala da 2–31, dove 2 è la migliore):
ffmpeg -i input.heic -q:v 2 output.jpg
Conversione batch
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
ffmpeg -i "$f" -q:v 2 "${f%.*}.jpg" -y
done
Il flag -y sovrascrive i file di output esistenti senza chiedere.
Nota: il supporto HEIC di FFmpeg dipende da come è stato compilato. Alcuni pacchetti di distribuzioni Linux (ad esempio ffmpeg-free su Fedora) possono non avere la decodifica HEVC per motivi di brevetto. Se ricevi un errore del decoder, usa heif-convert o ImageMagick.
Python — pillow-heif + Pillow
Per gli sviluppatori che necessitano della conversione HEIC all'interno di un'applicazione o script Python, la libreria pillow-heif aggiunge il supporto HEIC a Pillow (PIL). È utile per integrare la conversione in pipeline di dati, backend web o script di automazione.
Installazione
pip install pillow-heif Pillow
Conversione di un singolo file
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 di conversione batch
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}")
Preservare i dati 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)
Il parametro exif passa i byte EXIF grezzi all'output JPG, preservando impostazioni della fotocamera, coordinate GPS e timestamp.
Terminale macOS — sips (integrato)
macOS include sips (Scriptable Image Processing System) di default. Supporta HEIC nativamente perché macOS include il codec HEVC. Nessuna installazione richiesta.
Conversione di un singolo file
sips -s format jpeg input.heic --out output.jpg
Conversione batch
mkdir -p converted
for f in *.heic *.HEIC; do
[ -e "$f" ] || continue
sips -s format jpeg "$f" --out "converted/${f%.*}.jpg"
done
Avvertenza: sips rimuove la maggior parte dei metadati EXIF durante la conversione di formato. Se hai bisogno di preservare le coordinate GPS o le impostazioni della fotocamera, usa invece heif-convert --with-exif o ImageMagick su macOS. Entrambi sono disponibili tramite Homebrew.
PowerShell (Windows) — ciclo con ImageMagick
Su Windows, ImageMagick fornisce l'opzione da riga di comando più affidabile. Una volta installato, puoi usare PowerShell per convertire in batch:
Installazione
- Scarica l'installer Windows da
imagemagick.org/script/download.php(scegli «Win64 dynamic»). - Avvia l'installer e seleziona «Add application directory to your system path».
- Apri una nuova finestra PowerShell e verifica:
magick --version
File singolo
magick convert photo.heic -quality 92 photo.jpg
Conversione batch
Get-ChildItem *.heic | ForEach-Object {
magick convert $_.FullName -quality 92 ($_.DirectoryName + "\" + $_.BaseName + ".jpg")
}
Questo converte ogni file .heic nella cartella corrente in JPG con qualità 92. I file originali rimangono intatti.
Confronto degli strumenti
| Strumento | Piattaforme | Batch | Ctrl qualità | EXIF | Velocità* |
|---|---|---|---|---|---|
| heif-convert | Linux, macOS | Sì | -q 1-100 | --with-exif | ~0,3 s / file |
| ImageMagick | Linux, macOS, Win | Sì | -quality | Predefinito | ~0,5 s / file |
| FFmpeg | Linux, macOS, Win | Sì | -q:v 2-31 | Predefinito | ~0,6 s / file |
| Python | Linux, macOS, Win | Sì | quality= | Manuale | ~0,8 s / file |
| sips | solo macOS | Sì | Limitata | Rimuove la maggior parte | ~0,4 s / file |
| PowerShell | Windows | Sì | -quality | Predefinito | ~0,5 s / file |
*Tempi approssimativi per una foto iPhone 12 MP (4032 × 3024) su hardware moderno. La velocità effettiva varia in base a CPU, I/O del disco e complessità dell'immagine.
Impostazioni di qualità spiegate
Strumenti diversi usano scale di qualità diverse. Ecco come ottenere un output equivalente tra gli strumenti:
| Qualità target | heif-convert / IM | FFmpeg (-q:v) | Python (Pillow) |
|---|---|---|---|
| Massima | -q 100 |
-q:v 2 |
quality=100 |
| Ottimale (CleverUtils) | -q 92 |
-q:v 3 |
quality=92 |
| Buona | -q 85 |
-q:v 5 |
quality=85 |
| Ottimizzata per il web | -q 75 |
-q:v 8 |
quality=75 |
Perché qualità 92? È l'impostazione che CleverUtils.com usa in produzione. A 92, il JPG convertito è visivamente identico all'originale HEIC in condizioni di visione normali. Andare più in alto (95+) gonfia la dimensione del file del 30–50 % senza miglioramento percepibile. Sotto 85, gli artefatti di compressione diventano visibili nelle sfumature del cielo e nelle texture fini.
Non vuoi la riga di comando?
Se preferisci evitare di installare strumenti, configurare delegate e scrivere cicli shell — il widget di conversione in cima a questa pagina fa la stessa cosa nel tuo browser. Carica un file HEIC, ottieni un JPG in pochi secondi. CleverUtils.com usa heif-convert + ImageMagick sui propri server — gli stessi strumenti trattati in questo articolo, già configurati e ottimizzati.