Quasi tutti i moduli di caricamento segnalano ogni errore con la stessa frase. Dietro quel singolo messaggio si nascondono almeno quattro controlli diversi, e ognuno si risolve in modo diverso.
Controllo uno: il limite in byte
Il limite più comune, e l’unico a cui di solito si pensa. Si misura in byte, non in megapixel, quindi un’immagine che sembra piccola appena uscita da un telefono moderno può benissimo non passarlo.
Si risolve comprimendo a un numero sotto il limite dichiarato, non esattamente al limite. Alcuni sistemi misurano la richiesta codificata invece del file, e un caricamento codificato in base64 occupa circa un terzo in più del file su disco. Puntare a qualche punto percentuale sotto il limite non ti costa quasi nulla e toglie di mezzo tutta la questione.
Controllo due: il limite di misura
È una cosa distinta dalla dimensione del file, e spesso non è documentata. Un modulo può pretendere una foto larga al massimo 1200 pixel a prescindere da quanto sia leggero il file. Comprimere di più non lo soddisferà mai: devi ridimensionare. Se il modulo dichiara una misura di visualizzazione, di solito impone anche un massimo vicino a quella.
Controllo tre: il tipo MIME
I server scritti con attenzione non si fidano dell’estensione del file: leggono i primi byte e
riconoscono il formato dalla sua firma. Rinomina un PNG in .jpg e un server rigoroso continua a
vedere un PNG, perché è quello che dicono i byte.
È per questo che convertire serve e rinominare no. Ed è anche il motivo per cui un file esportato da uno strumento di grafica come “JPEG” può essere respinto: alcuni esportatori scrivono una variante che la libreria del server rifiuta.
Controllo quattro: spazio colore e variante di codifica
Più raro, ma reale. I JPEG in CMYK, i PNG a 16 bit e i JPEG progressivi sono tutti file validi che alcune vecchie librerie lato server rifiutano senza appello.
La ricodifica risolve quelli che riesce a raggiungere. ToolZool decodifica fino a pixel a 8 bit puliti e scrive JPEG baseline per impostazione predefinita, quindi un PNG a 16 bit torna indietro a 8 bit e un JPEG progressivo torna indietro come baseline: proprio le varianti che un server schizzinoso ha più probabilità di accettare. Il caso scomodo è il JPEG in CMYK: è un file da flusso di lavoro tipografico e non da web, e la soluzione affidabile è riesportarlo in RGB da qualunque programma l’abbia prodotto.
Come distinguerli
Prova con un’immagine di test deliberatamente minuscola: qualche kilobyte, qualche centinaio di pixel, un semplice JPEG baseline. Se quella si carica, il problema è nel tuo file e ora sai su quale asse intervenire — parti dal compressore e, se il limite è stringente, rientrare in un limite di 50 KB spiega in che ordine cambiare le cose. Se anche l’immagine di test viene rifiutata, il problema è il modulo, la sessione o il browser, e nessuna ricodifica potrà servire.

