Foto HEIC dall'iPhone e WordPress: come caricarle senza grane di conversione
Ogni iPhone venduto dal 2017 scatta in HEIC di default. Ogni sito WordPress costruito prima del 2024 rifiutava i file HEIC al caricamento. Questo scollamento mi ha causato più confusione di qualsiasi altro problema di formato in quindici anni di siti WordPress.
La situazione è migliorata a fine 2024 quando WordPress 6.7 ha aggiunto il supporto nativo a HEIC. Però "migliorata" non vuol dire "risolta". Ci sono ancora ambienti di hosting in cui l'upload HEIC fallisce in silenzio, plugin che si strozzano sul formato e nei forum girano consigli contraddittori.
Ecco cosa ho imparato gestendolo davvero su decine di siti dei clienti.
Cosa è davvero HEIC
HEIC (High Efficiency Image Container) usa il formato HEIF con compressione H.265. Apple lo ha adottato in iOS 11 perché produce file circa 40-50% più piccoli del JPEG a parità di qualità visiva. Una foto iPhone tipica che peserebbe 6 MB in JPEG arriva intorno a 3 MB in HEIC.
Quel divario di dimensioni conta quando carichi sotto rete mobile e conta per lo storage del server WordPress. File più piccoli, stessa qualità. Sul formato in sé non c'è niente da ridire.
Il problema è la compatibilità. Per anni, fuori dall'ecosistema Apple quasi nulla sapeva aprire HEIC. Windows ha aggiunto il supporto nel 2018. Android nel 2019. WordPress non l'ha aggiunto fino alla 6.7 a fine 2024, e anche allora dipende dal fatto che il server abbia la giusta libreria di elaborazione immagini installata.
HEIC archivia anche metadati più ricchi del JPEG: profondità di colore a 10 bit invece che a 8, gamut Display P3 più ampio rispetto al solo sRGB e mappe di gain HDR che permettono ai display moderni di mostrare le luci con più mordente. Quando appiattisci in JPEG, perdi tutte e tre.
Perché WordPress rifiuta HEIC di default
Prima di WordPress 6.7, trascinare un .heic nella Libreria media faceva scattare il famigerato messaggio "Spiacente, questo tipo di file non è permesso per ragioni di sicurezza". La motivazione non è davvero la sicurezza in senso anti-malware. È una whitelist.
WordPress valida ogni upload tramite wp_check_filetype_and_ext(), che confronta estensione e tipo MIME con la lista hardcoded in get_allowed_mime_types(). Se la combinazione non c'è, l'upload viene rifiutato prima ancora di arrivare alla Libreria media. La cornice "sicurezza" esiste perché permettere qualsiasi tipo di file consentirebbe a un attaccante di caricare un eseguibile travestito da immagine, ma in pratica il filtro è solo una allowlist rigida.
Per HEIC il problema storico era duplice. Primo, image/heic non era nella lista di default. Secondo, anche forzandolo con un filtro, le librerie PHP di immagini (GD e ImageMagick) non sapevano decodificare il formato sulla maggior parte dei server. WordPress era onesto a rifiutarlo: non ha senso accettare un file che il sistema non può elaborare. WordPress 6.7 ha sistemato entrambi i pezzi aggiungendo image/heic e image/heif alla allowlist e insegnando alle classi dell'editor di immagini a smistare HEIC verso ImageMagick quando libheif è disponibile.
Supporto HEIC di WordPress 6.7: cosa è cambiato
Prima della 6.7 il rimedio era convertire ogni foto in JPEG prima di caricarla (noioso) o aggiungere uno snippet in functions.php per inserire il tipo MIME nella whitelist (rischioso se il server non sa davvero elaborare il file). Ho visto entrambi gli approcci rompere siti in modo subdolo: la whitelist provoca miniature rotte, la conversione manuale perde metadati senza dirlo.
WordPress 6.7 ha aggiunto HEIC alla lista dei tipi consentiti e include un supporto base per generare miniature dai file HEIC. Se il server ha ImageMagick compilato con il supporto HEIF (o libheif per GD), ora WordPress gestisce HEIC nativamente.
È un "se" molto pesante.
Dove funziona
La maggior parte degli hosting gestiti moderni (Cloudways, Kinsta, SiteGround sulla loro infrastruttura più recente) include ImageMagick con supporto HEIF. Su uno di questi hosting con WordPress 6.7 o successivo, gli upload HEIC dovrebbero funzionare al volo.
Dove non funziona
L'hosting condiviso su infrastruttura datata è una lotteria. Molti hosting economici girano su versioni vecchie di ImageMagick senza supporto HEIF. L'upload può avere successo (il file arriva sul server) ma WordPress non riesce a generare miniature. Ti ritrovi con un HEIC a piena risoluzione nella Libreria media e segnaposti di miniature rotti ovunque.
Quando succede non c'è un messaggio d'errore pulito. La Libreria media mostra solo un'icona generica al posto dell'anteprima. Mi è capitato che clienti segnalassero "le foto non si caricano" mentre in realtà le foto si caricavano benissimo, sembravano solo rotte nell'admin. Se vuoi un percorso più approfondito su come dovrebbe comportarsi la Libreria media quando tutto fila, leggi la mia guida alla Libreria media di WordPress.
Supporto HEIC degli hosting: tabella comparativa
Ho passato un weekend a testare lo stesso file HEIC d'iPhone su cinque hosting principali per vedere chi lo elaborava in modo pulito e chi rompeva le miniature in silenzio. Risultati aggiornati a inizio 2026.
| Hosting | Upload HEIC accettato | Miniature generate | ImageMagick + libheif | Note |
|---|---|---|---|---|
| Kinsta | Sì | Sì | Sì (ImageMagick 7 + libheif) | Esperienza più pulita. Funziona anche AVIF. |
| Cloudways (Vultr/DO) | Sì | Sì | Sì | Dipende dalla versione dello stack. Server recenti senza problemi. |
| WP Engine | Sì | Sì | Sì | Supporto HEIC nativo aggiunto con l'aggiornamento di piattaforma del 2024. |
| SiteGround | Sì | Parziale | Misto | Piani recenti funzionano. Vecchi ambienti condivisi falliscono sulle miniature. |
| Bluehost (condiviso) | Sì | No | No (ImageMagick datato) | L'upload va a termine, miniature rotte. Convertire prima dell'upload. |
Il pattern è ovvio: gli hosting WordPress gestiti premium hanno investito in librerie di immagini moderne, mentre l'hosting condiviso economico gira ancora su stack datati dove il supporto HEIC è nel migliore dei casi a macchia di leopardo. Se sei su Bluehost condiviso o su un provider di prezzo simile e HEIC conta nel tuo flusso, conviene convertire prima dell'upload anziché lottare col server.
Come verificare se il server supporta HEIC
Vai su Strumenti > Salute del sito > Info > Gestione media nell'admin di WordPress. Cerca la versione di ImageMagick e i formati supportati. Se vedi "HEIC" o "HEIF" nella lista, sei a posto.
Se non c'è, o se stai usando GD invece di ImageMagick, le miniature HEIC non verranno generate. Hai due opzioni: chiedere all'hosting di aggiornare ImageMagick, oppure convertire le foto prima del caricamento.
La trappola del "converti prima di caricare"
"Converti i tuoi HEIC in JPEG prima" è il consiglio più diffuso nei forum WordPress. Sembra ragionevole. È anche una delle peggiori cose da fare se la qualità d'immagine ti interessa, perché la rotta di conversione predefinita su iPhone è lossy in modi che la maggior parte non si aspetta.
Ecco cosa succede quando lasci che iOS converta HEIC in JPEG automaticamente (la rotta AirDrop verso Windows, l'allegato Mail Drop, il share sheet verso la maggior parte delle app):
- Compressione del gamut. L'HEIC originale è memorizzato in Display P3, uno spazio circa il 25% più ampio dell'sRGB. L'export JPEG viene clampato a sRGB. Rossi, arancioni e verdi saturi si appiattiscono visibilmente.
- Riduzione della profondità in bit. HEIC archivia 10 bit di colore (1024 valori per canale). JPEG è inchiodato a 8 bit (256 valori). Le sfumature morbide del cielo possono mostrare banding visibile dopo la conversione.
- Perdita della mappa di gain HDR. iOS incorpora una mappa di gain HDR accanto ai pixel SDR perché i display capaci possano renderizzare luci più brillanti. JPEG non ha equivalente. Dettagli di ombre e luci schiacciati durante l'export.
- EXIF rimossi (a volte). A seconda dell'app che fa la conversione, coordinate GPS, info dell'obiettivo e impostazioni di scatto possono saltare. Se ti affidi ai metadati per organizzare o geotaggare, controlla prima di convertire in massa.
- Inflazione del peso file. L'intero motivo per cui HEIC esiste è la compressione. Un HEIC da 3 MB tipicamente gonfia a 6-8 MB come JPEG qualità 85, raddoppiando lo storage usato.
L'inghippo è che tutte queste perdite sono invisibili a dimensione miniatura. Te ne accorgi solo quando qualcuno zooma, stampa o guarda l'immagine su un display wide-gamut. A quel punto è troppo tardi, il JPEG è il file che ti resta.
Approccio più intelligente: converti al momento della pubblicazione, con uno strumento che preserva ciò che conta e appiattisce solo quello che WordPress ha bisogno di appiattito. È il vincolo di design dietro a ogni strumento di upload che valga la pena.
Il problema della conversione sull'iPhone stesso
Convertire HEIC in JPEG prima di caricare suona semplice. Su un laptop lo è. Anteprima su macOS converte file in batch in pochi secondi. Su Windows ci pensa l'app Foto.
Sull'iPhone è un'altra storia. Niente convertitore in batch integrato. Puoi cambiare le impostazioni della fotocamera per scattare in JPEG anziché HEIC (Impostazioni > Fotocamera > Formati > Massima compatibilità), ma poi perdi il vantaggio del 40-50% sulla dimensione di ogni foto, non solo quelle dirette a WordPress.
Qualcuno usa l'app Comandi rapidi per costruire un convertitore HEIC-JPEG. Funziona, ma è uno step manuale in più nel flusso e i file convertiti sono più grandi. Stai scambiando un problema con un altro.
La cosa più frustrante è che il tuo iPhone gestisce già questa conversione automaticamente in alcune situazioni. Quando spedisci una foto via email o l'AirDrop a un PC Windows, iOS converte in JPEG al volo. Ma quando carichi tramite browser o l'app WordPress, manda il file HEIC originale. Non c'è impostazione che cambi questo comportamento per gli upload. Se spari spesso 10-20 foto alla volta dall'iPhone a WordPress, dai un'occhiata ai miei appunti sull'upload massivo di immagini da telefono per tecniche che resistono alle stranezze di iOS.
Cosa fa SnapPress con HEIC
Quando ho costruito SnapPress, la gestione di HEIC è stata una delle prime cose da risolvere. L'approccio è lineare: l'app legge il file HEIC originale, lo converte in JPEG localmente sull'iPhone prima di caricarlo, e invia il JPEG a WordPress.
Significa che funziona con qualsiasi sito WordPress a prescindere dalla configurazione del server. L'hosting non ha bisogno di supporto HEIF in ImageMagick. WordPress non deve essere alla 6.7. Quello che arriva al server è un JPEG standard che ogni installazione di WordPress dalla 1.0 in poi sa gestire.
La conversione avviene on-device e impiega frazioni di secondo per foto. Non la vedi. Non la configuri. Selezioni le foto, tappi su carica e nella Libreria media compaiono file JPEG con miniature, anteprime e tutto che funziona correttamente.
È l'approccio "giusto"? Dipende da cosa ti interessa. Se vuoi le dimensioni file più piccole in assoluto, caricare HEIC nativo verso un server che lo supporta è tecnicamente meglio. Se vuoi qualcosa che funzioni su qualsiasi sito WordPress senza controllare le configurazioni server, la conversione automatica è la scelta più sicura. Ho confrontato un pugno di app iOS concorrenti nel mio elenco delle migliori app di upload foto per WordPress se vuoi vedere come SnapPress si confronta con le alternative.
Ho scelto l'affidabilità sopra l'ottimizzazione teorica. Per esperienza, la maggior parte degli utenti WordPress non sa e non vuole sapere quale versione di ImageMagick gira sul proprio hosting. Vogliono solo che le foto compaiano.
E Jetpack e l'app mobile WordPress?
L'app mobile ufficiale di WordPress (che si appoggia a Jetpack per molte funzioni) ha gestito HEIC in modo incoerente negli anni. Le versioni recenti convertono HEIC in JPEG prima dell'upload, simile a quello che fa SnapPress, ma la conversione passa dal pipeline di elaborazione immagini di Jetpack, il che significa che serve una connessione Jetpack e un account WordPress.com attivo legato al sito.
Va bene se usi già Jetpack. È frustrante se no, perché a volte l'app si rifiuta di caricare del tutto senza la connessione. Ho scritto una guida separata sul caricamento di foto su WordPress senza Jetpack per chi vuole uno stack più snello. In breve: se Jetpack non fa parte del tuo flusso, usa un'app di terze parti che parla direttamente con la REST API di WordPress. Salti del tutto la dipendenza da WordPress.com.
L'altro formato in cui ti imbatterai: HEIF e AVIF
HEIC è tecnicamente un formato contenitore che racchiude immagini HEIF. Ogni tanto vedrai file con estensione .heif al posto di .heic. WordPress 6.7 li tratta allo stesso modo.
AVIF è un formato più nuovo che sta prendendo piede sul web (è quello che Netflix e molti CDN usano per la consegna delle immagini). WordPress ha aggiunto il supporto AVIF in 6.5. Alcuni iPhone più recenti possono scattare in AVIF, anche se non è ancora il default.
Per ora HEIC è quello con cui avrai a che fare il 99% delle volte se carichi foto dall'iPhone. Ma tieni AVIF nel mirino. Comprime ancora meglio di HEIC e ha un supporto cross-platform più ampio.
AVIF su iPhone 16: cosa arriva dopo
L'iPhone 16 monta supporto AVIF completo lungo iOS 18: Foto legge file AVIF, Safari li renderizza inline e il share sheet li tratta come cittadini di prima classe. La fotocamera resta di default su HEIC, ma il pipeline di rendering e decodifica è ormai AVIF-aware end-to-end.
WordPress è pronto. La 6.5 ha aggiunto image/avif ai tipi MIME consentiti a marzo 2024 e la 6.7 ha esteso la logica di elaborazione perché i file AVIF generino miniature decenti. Se il tuo server ha una build recente di ImageMagick con libavif, l'intero pipeline funziona senza configurazione.
Perché AVIF conta per chi pubblica: comprime circa il 20% più di HEIC a parità di qualità percepita e il 50% più di JPEG. Funziona in ogni browser moderno (Chrome, Firefox, Safari, Edge), a differenza di HEIC che non ha mai avuto supporto browser universale. Ed è royalty-free grazie ad AV1, mentre HEIC sta sopra l'ingarbugliato licensing brevettuale di HEVC.
Differenza pratica: HEIC è un formato di cattura con cui combatti in entrata, AVIF è un formato di consegna che servi ai visitatori in uscita. La maggior parte dei flussi finisce con originali HEIC dalla fotocamera, intermedi JPEG o AVIF nella Libreria media e AVIF servito ai browser via CDN o plugin come ShortPixel. È improbabile che Apple cambi il default della fotocamera su AVIF prima che ProRAW e Live Photos siano migrati: progetto da più anni. Ottimizza ora la gestione HEIC in entrata e lascia che sia il tuo CDN a occuparsi di AVIF in uscita.
Il mio consiglio
Se l'hosting supporta HEIC (controlla in Salute del sito) e sei su WordPress 6.7+, carica i file HEIC direttamente. Goditi i pesi più ridotti.
Se l'hosting non supporta HEIC, o gestisci più siti su hosting diversi e non vuoi controllarli uno per uno, usa uno strumento che converta per te. SnapPress lo fa in automatico. Il plugin SnapPress Connect gestisce la connessione al sito e l'app gestisce la conversione del formato dietro le quinte.
Non cambiare il formato della fotocamera dell'iPhone in JPEG solo perché WordPress ti ha dato un grattacapo una volta. HEIC è il formato migliore. È lo strumento di upload che dovrebbe adattarsi, non le impostazioni della fotocamera.