Preparati per un immenso post - sì, questo è sfuggito di mano ...
Xkcd obbligatorio:
Sfortunatamente, non esiste un semplice formato "migliore". Alcuni sono molto ben supportati, alcuni offrono estrema versatilità, altri offrono una compressione senza perdita, ...
La prima parte di questa risposta ("Caratteristiche" e "Breve panoramica dei formati") parlerà di tecnicismi, mentre la seconda parte ("Altre cose da considerare") è più diretta sugli aspetti pratici della scelta del formato .
Caratteristiche:
Si noti che è quasi impossibile includere tutti gli hack in tutti i formati, ad esempio le GIF possono essere salvate senza compressione ignorando la tabella LZW. Perché non lo menziono di seguito? Perché il 99% di tutte le GIF che ho mai incontrato utilizzava LZW, perché LZW oggi è un gioco da ragazzi in termini di potenza di calcolo e perché questo post cerca di chiarire la situazione per situazioni popolari, non per il dipartimento di ricerca e sviluppo di ILM. I fotografi useranno i loro file per l'archiviazione, la pubblicazione e la stampa, quindi queste sono le cose che considero qui.
Informazioni incrociate tra i rispettivi articoli di Wikipedia, le specifiche, il confronto di Wiki e l' elenco di supporto per metadati di exiftool .
| Bits per | | Supported by
Codec | Lossy | Channel | Metadata | Channels | Programs | Good for (IMHO)
-------------------------------------------------------------------------------------------------
BMP | n | <= 8 | - | RGBA | Most propr. & free | Archival
BPG | y | <= 14 | EXIF+XMP | RGBA | |
EXR | o | <= 32 | y(?) | RGBAD | | VFX workflow
FLIF | o* | <= 16 | EXIF+XMP | RGBA | | To be seen
GIF | n | <= 8* | XMP | RGB | Most propr. & free | GIFs ;-)
HEIF | o* | <= 16 | EXIF+XMP | RGB(A/D) | | To be seen
JPEG | y* | <= 8 | EXIF+IPTC+XMP | RGB | ~ all propr. & free | Online; Easy access
JP2K | o | <= 32 | EXIF+IPTC+XMP | RGBA | |
JXR | o | <= 32 | EXIF+IPTC+XMP | RGBA | |
PNG | n | <= 16 | EXIF+IPTC+XMP*| RGBA | Most propr. & free | CAD-drawings; Online
TGA | n | <= 8 | y(?) | RGBA | |
TIFF | o | <= 32 | EXIF+XMP | RGBA | Most propr. & free | Archival; Editing
WebP | o | <= 8 | EXIF+XMP | RGBA | |
Legenda : o
... Opzionale; n
... non disponibile; y
... a disposizione; D
... profondità; *
... Guarda sotto il testo corrispondente.
Breve panoramica dei formati:
BMP
Feature |
-----------------------------------------------------------------
Introduced | 1990
Open + Free | Both per Microsoft's Open Specification Promise
Colorspace | R:G:B[:A] (4:4:4[:4])
b/c/p | 1:0:0[:0], 5:6:5, 8:8:8[:8]
Compression | None [RLE in 5:6:4] (so: lossless)
Maximum Size | 4 GiB
Metadata | [ICC]
OS support | Virtually all OSs with a graphical interface
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
I file 'Bitmap' sono codificati in linee e di solito non sono compressi, quindi un singolo capovolgimento distruggerà solo una linea dell'immagine Fintanto che non capovolge l'intestazione, il che renderà più difficile la decodifica - provalo tu stesso con un HEX Editor! . Dal momento che non offre (buona) compressione, le dimensioni dei file sono enormi, in quanto deve salvare le informazioni complete per ogni pixel. A causa della sua rigidità, può essere utile per l'archiviazione a lungo termine.
BPG
Feature |
---------------------------------------------------------------------
Introduced | 2014
Open + Free | Yes (but HEVC patents might be problematic)
Colorspace | R:G:B[:A] (4:4:4[:4]); Y:Cb:CR[:A] (4:2:0[:4] - 4:4:4[:4]);
| Y:Cg:Co[:A] (4:2:0[:4] - 4:4:4[:4]); C:M:Y:K (4:4:4:4)
b/c/p | 8 - 14
Compression | HEVC (lossy / lossless)
Maximum Size | ?
Metadata | [EXIF]; [ICC]; [XMP]
OS support | Linux, Mac, Windows (at least through browser decoding)
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
BPG (Better Portable Graphics) utilizza HEVC, che potresti conoscere dal codec video h.265 . Doveva essere il successore di JPEG, ma non divenne mai abbastanza popolare. Con l'ascesa di HEIF, che è abbastanza simile in qualche modo ma più popolare, è plausibile che HEIF sia preferito. HEVC è di gran lunga superiore in termini di compressione rispetto al DCT di JPEG - tuttavia, non si confronta bene in tutti ma con i bit rate più bassi, poiché tende ad essere sfocato.
EXR
Feature |
---------------------------------------------------------------------
Introduced | 1999
Open + Free | Yes
Colorspace | R:G:B[:A][:D] (4:4:4[:4][:4])
b/c/p | <= 32
Compression | [RLE]; [ZIP]; [PIZ]; ... [lossless (usual) / lossy]
Maximum Size | > 4 GiB
Metadata | [Yes (XMP-style)]
OS support | Linux, Mac, Windows (through library)
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
OpenEXR è stato progettato da Industrial Lights and Magic (ILM) come formato intermedio per i flussi di lavoro VFX. Può contenere più canali a profondità di bit molto elevate, più immagini e metadati in un unico file. Offre diversi algoritmi di compressione o nessuna compressione. EXR può essere paragonato a TIFF: EXR offre più opzioni, mentre TIFF è molto popolare.
FLIF
Feature |
---------------------------------------------------------------------
Introduced | 2015
Open + Free | Yes
Colorspace | R:G:B[:A] (4:4:4[:4]) (CMYK and YCbCr in ToDo-List)
b/c/p | <= 16
Compression | MANIAC (variant of CABAC, used in AVC/HEVC) (lossless / lossy (1st generation))
Maximum Size | > 4 GiB
Metadata | [EXIF]; [ICC]; [XMP]
OS support | Linux, Mac, Windows (through provided viewer)
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
"Free Lossless Image Format" (FLIF) utilizza un derivato della compressione HEVC senza perdita di dati. FLIF afferma di avere rapporti di compressione estremi rispetto a tutti gli altri formati del tempo - mentre i miei test mi hanno portato a crederci, ha davvero bisogno di potenza di elaborazione per essere utilizzabile (diversi minuti di tempo di codifica per una singola immagine da 24 MP con un hyperthreaded 4,3 GHz hexacore non è così buono: D) . Tuttavia, poiché si tratta di un giovane codec, potrebbero esserci miglioramenti. Offre supporto per animazioni, canali alfa, decodifica progressiva e persino codifica con perdita (senza più perdite di generazione dopo la prima codifica). Solo il tempo mostrerà se avrà successo, e ad essere sincero, lo spero proprio, poiché sembra offrire una soluzione unica per molteplici problemi.
GIF
Feature |
---------------------------------------------------------------------
Introduced | 1987
Open + Free | Yes
Colorspace | R:G:B[:A] (4:4:4[:4])
b/c/p | 2 (palette of 256 colors in total)
Compression | LZW (lossless)
Maximum Size | < 4 GiB
Metadata | [XMP]
OS support | Virtually all OSs with a graphical interface
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
Mentre "Graphics Interchange Format" (GIF) offre 8 bit per canale per pixel, li ridurrà a una tavolozza di colori di 256 colori (che può includere un "colore di sfondo"). Viene utilizzato principalmente per le animazioni: l'unica cosa che PNG non può fare di meglio, poiché PNG in sé non offre supporto per l'animazione.
HEIF
Feature |
----------------------------------------------------------------------
Introduced | 2015
Open + Free | No (patents)
Colorspace | ? Y:Cb:Cr[:A/:D] (4:2:0[:4]) ?
b/c/p | <= 16
Compression | HEVC (lossy)
Maximum Size | < 4 GiB
Metadata | [EXIF]; [XMP]
OS support | Linux, Mac, Windows
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
"HEIF (High Efficiency Image Format)" utilizza anche HEVC per la compressione. Oltre ai canali di colore, può contenere anche un canale alfa o una mappa di profondità (utilizzata per gli effetti di profondità di campo del software successivi ). Inoltre, la modifica rudimentale può avvenire senza perdita di dati. Accodando alle specifiche, ha anche una modalità di compressione senza perdita di dati. Dal momento che tutti i principali sistemi operativi lo supportano, sembra il contendente più probabile per una successione di JPEG (se mai ce n'è uno).
JPEG
Feature |
----------------------------------------------------------------------
Introduced | 1991
Open + Free | Sort of (free library, but patent might apply)
Colorspace | Y:Cb:Cr (4:2:0 (typical) - 4:4:4)
b/c/p | 8
Compression | DCT (lossy)
Maximum Size | < 2 GiB
Metadata | [EXIF]; [ICC]; [IPTC]; [XMP]
OS support | Virtually all OSs with a graphical interface
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
"Joint Photographic Experts Group" (JPEG) è probabilmente il formato di immagine più utilizzato oggi. Utilizza la trasformazione del coseno discreto (DCT), che è del tipo a perdita. Esiste una specifica senza perdita di dati, ma non viene utilizzata troppo spesso. Alcuni programmi possono eseguire determinate azioni rudimentali (ad es. Rotazione) senza perdita di dati, sebbene ciò richieda anche che la larghezza e l'altezza dell'immagine siano divisibili per 8 (la dimensione del blocco di JPEG) - ad esempio 800x640 funzionerà, 804x643 no. JPEG non ha alcuna opzione per salvare le immagini in RGB: trasforma l'immagine nello spazio colore YCbCr e spesso riduce le informazioni sui pixel da 4: 4: 4 (ogni pixel ha tutti i canali) a 4: 2: 0 (ogni canale ha luminanza, ma solo ogni 4 ° pixel ottiene un valore Cb / Cr). Come con la maggior parte delle conversioni dello spazio colore, questo può portare a differenze percepibili soprattutto nei colori estremi. JPEG è veloce da codificare e non è poi così male in impostazioni di alta qualità, ma per me le cose di cui sopra non mi farebbero piangere se mai svanisse - ci è servito bene, ma i formati di immagine usati potrebbero essere un po 'di più ... recente. Dopotutto, i computer si sono evoluti bene dal 1991.
JP2k
Feature |
----------------------------------------------------------------------
Introduced | 2000 (duh...)
Open + Free | No (patents)
Colorspace | ? Y:Cb:Cr[:A] (4:4:4[:4]) ?
b/c/p | 8 - 32
Compression | Wavelet (lossy / lossless)
Maximum Size | ?
Metadata | [EXIF]; [ICC]; [IPTC]; [XMP]
OS support | Linux, Mac, Windows (at least through viewer programs)
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
'JPEG 2000' (JP2k o JP2) è il successore ufficiale di JPEG. Utilizza le wavelet invece del DCT, che offrono artefatti meno blocchi ed è complessivamente più versatile di JPEG. Nonostante tutto, non ha mai raggiunto il JPEG.
JXR
Feature |
----------------------------------------------------------------------
Introduced | 2009
Open + Free | Yes (Microsoft Open Specification Promise)
Colorspace | Y:Cb:Cr[:A] (4:2:0[:4] - 4:4:4[:4]); Y:Cg:Co[:A] (? 4:2:0[:4] - 4:4:4[:4] ?);
| C:M:Y:K [4:4:4:4]
b/c/p | 8 - 32 (16 for CMYK)
Compression | DCT (lossy / lossless)
Maximum Size | ?
Metadata | [EXIF]; [ICC]; [IPTC]; [XMP]
OS support | Linux, Mac, Windows (at least through viewer programs)
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
'JPEG portata estesa' (JPEG XR, JXR) è un altro tentativo di avere successo JPEG. Il suo spazio colore YCgCo è superiore a YCbCr perché è completamente reversibile. Mentre alcuni software lo supportano, anche questo non si è mai avvicinato alla fama di altri formati.
PNG
Feature |
----------------------------------------------------------------------
Introduced | 1996
Open + Free | Yes
Colorspace | R:G:B[:A] (4:4:4[:4])
b/c/p | 8 - 16
Compression | DEFLATE (lossless)
Maximum Size | ?
Metadata | [EXIF]; [ICC]; [IPTC]; [XMP]
OS support | Virtually all OSs with a graphical interface
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
"Portable Network Graphics" (PNG) è stato introdotto come successore di GIF. Sebbene sia privo di perdite in base alla progettazione, i file PNG possono essere ottimizzati con diversi strumenti, alcuni dei quali comprimono il file in modo lossy. PNG utilizza la compressione DEFLATE, quindi è abbastanza efficiente per la grafica (come disegni CAD, schermate, ...), ma meno efficiente per le fotografie. Mentre offre supporto per i metadati, alcuni programmi hanno difficoltà a leggerli. Grazie per l'heads-up, @mattdm !
TGA
Feature |
----------------------------------------------------------------------
Introduced | 1984
Open + Free | ? Yes
Colorspace | R:G:B[:A] (4:4:4[:4])
b/c/p | <= 8
Compression | RLE (lossless)
Maximum Size | ? < 2 GiB
Metadata | Rudimentary
OS support | ? Virtually all OSs with a graphical interface
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
'Truevision TGA' / 'TARGA' (TGA) è un formato grafico che ho incluso solo perché sembra che tutti lo sappiano. È stato introdotto nel 1984. Supporta la compressione lossless (RLE) che funzionerà bene per la grafica, ma non così bene per le fotografie.
TIFF
Feature |
----------------------------------------------------------------------
Introduced | 1986
Open + Free | ? Yes
Colorspace | R:G:B[:A] (4:4:4[:4]); Y:Cb:Cr[:A] (? 4:2:0[:4] - 4:4:4[:4] ?);
| C:M:Y:K (? 4:4:4:4 ?); L:a:b[:A] (? 4:4:4:[A] ?)
b/c/p | 8 - 32
Compression | [LZW (lossless)]; [ZIP (lossless)]; [JPEG (lossy)]
Maximum Size | ?
Metadata | [EXIF]; [ICC]; [XMP]
OS support | Virtually all OSs with a GUI support >= 1 of the compression types
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
Anche il "Tagged Image File Format" (TIF o TIF) esiste da molto tempo. Offre il supporto dei livelli (ovvero più immagini RGBA sovrapposte). I TIFF sono spesso usati come file intermedi perché sono ampiamente supportati e abbastanza flessibili in termini di capacità.
WebP
Feature |
----------------------------------------------------------------------
Introduced | 2010
Open + Free | Yes
Colorspace | R:G:B:A (4:4:4[:4]) lossless; Y:Cb:Cr[:A] (4:2:0[:4]) lossy
b/c/p | 8
Compression | VP8 (lossless / lossy)
Maximum Size | ?
Metadata | [EXIF]; [ICC]; [XMP]
OS support | Linux, Mac, Windows (at least through browser decoding)
Legenda : b/c/p
... bit per canale (ad es. R, G, B) per pixel. le cose [ ]
sono opzionali; ?
... ipotesi colta / nessun indizio.
'WebP' utilizza VP8 (un formato rivale open source per AVC). Come con BPG, non ha mai fatto il salto nei dispositivi di consumo, anche se sembra che sia utilizzato da molti servizi Internet.
(Altro) Cose da considerare:
Ricodifica (perdita di generazione)
La ricodifica di un file lossless non altererà nulla: la ricodifica di un file lossy porterà quasi sicuramente a artefatti. JPEG può gestirlo abbastanza bene se si salva il file con la stessa impostazione di qualità in cui era stato salvato in precedenza.
Questo video mostra abbastanza bene la perdita di generazione : il primo fotogramma mostra il file originale, mentre tutti gli altri mostrano la ricompressione con impostazioni di qualità diverse. (Si noti che FLIF è in modalità lossy, quindi il primo fotogramma apparirà diverso.)
Gli artefatti non saranno necessariamente una condanna a morte - ad es. Per la rapida pubblicazione sul web o l'anteprima su dispositivi mobili, potrebbe non essere così male.
Longevità del codec
Quando scrivevo questa risposta, pensavo a me stesso "chi userebbe TARGA al giorno d'oggi, comunque?" e mi ha fatto pensare: non esiterei mai a guidare un'auto prodotta negli anni '80. Non esiterei a guardare le foto scattate negli anni '80. Vorrei utilizzare qualsiasi fotocamera realizzata in quel momento. Ma non userei un codec così vecchio. Perché?
Alla fine, non esiste un modo sicuro per dire se un codec o l'altro sopravviveranno per un certo lasso di tempo. Se domani HEIF dovesse sostituire JPEG su tutti i dispositivi consumer, quanto tempo impiegherebbe i programmi a interrompere il supporto JPEG? Quante generazioni di computer - e soprattutto: sistemi operativi - ci saranno prima che tu non possa più aprirli?
D'altra parte, i codec relativamente semplici come TARGA richiedono solo programmi relativamente semplici per leggerli, mentre i codec moderni e i loro decodificatori hanno dipendenze multiple. Quindi, sebbene la semplicità sia dannosa per la compressione, potrebbe essere utile per l'archiviazione in uno scenario apocalittico. Grazie @lijat per averlo segnalato!
A mio avviso, ciò ha bisogno di diversi aspetti da considerare: quale codec è abbastanza popolare in modo che il supporto non diminuisca immediatamente? Quale codec è supportato dalla comunità open source (perché nessuno manterrà i formati proprietari di una società fallita)? Inoltre, sembra che almeno ogni decennio circa, si dovrebbe vedere se è necessario passare a un nuovo codec meglio supportato (vedere "Ricodifica (perdita di generazione)") - ad esempio, non si vorrebbe la tua collezione TARGA sarà illeggibile domani, giusto?
A proposito, ciò è particolarmente preoccupante quando si pensa ai file RAW .
Supporto del programma (Longevity # 2)
Il codec più popolare e migliore non sarà abbastanza buono se non puoi usarlo. E anche se non userei codec inferiori solo perché un determinato programma non lo supporta, potrebbe essere male usare un codec che solo un programma supporta correttamente.
Di quali funzioni ho bisogno?
Personalmente, continuo a codificare la maggior parte dei miei file in JPEG: posso leggerli su qualsiasi dispositivo e riesco a malapena (se non del tutto) a vedere i manufatti. 8 bit è abbastanza buono per la maggior parte dei dispositivi e i canali alfa non sono realmente necessari quando si visualizzano solo le immagini.
Per tutti i file che non sono in stile "modifica una volta", conservo i miei RAW o almeno TIFF a 16 bit in modo che siano ancora utilizzabili in futuro.
PSD? DNG?
"Photoshop Document" (PSD) è il formato in stile TIFF di Photoshop. Tecnicamente, è abbastanza simile a TIF. C'è anche PSB, che è la stessa cosa solo per file di dimensioni superiori a 4 GiB. Non c'è niente di sbagliato nell'usarlo, ma personalmente preferisco il TIFF per quanto possibile.
"Digital Negative" (DNG) è un tentativo di creare uno standard RAW aperto. Anche se adoro l'idea e funziona abbastanza bene, nota che alcuni editor RAW hanno problemi con loro - ad esempio Capture One in genere dimentica il bilanciamento del bianco della fotocamera, impostando quindi il cursore su 5000K, indipendentemente dal valore reale. Altri programmi in passato li hanno mostrati come immagini solide bianche o rosa o danno loro una tonalità magenta. Se la dimensione del file non ti interessa, puoi includere il RAW originale nel tuo DNG - se mai ti serve di nuovo, puoi semplicemente estrarlo di nuovo. I miei 2 centesimi? Provalo con il tuo software preferito e, se funziona bene, usalo.
Altri formati?
Dato che questo mi era già sfuggito di mano, non volevo affrontare altri formati di immagine. Tuttavia, ciò non significa che non valga la pena considerare quelli non elencati.