Prepare-se para um post imenso - sim, isso saiu de controle ...
Xkcd obrigatório:
Infelizmente, não existe um formato "melhor" simples. Alguns são muito bem suportados, outros oferecem extrema versatilidade, outros oferecem compressão sem perdas, ...
A primeira parte desta resposta ("Recursos" e "Breve visão geral dos formatos") abordará aspectos técnicos, enquanto a segunda parte ("(Outras) Coisas a considerar") é mais direcionada aos aspectos práticos da escolha do formato .
Recursos:
Observe que é quase impossível incluir todos os truques em todos os formatos - por exemplo, os GIFs podem ser salvos sem compactação ignorando a tabela LZW. Por que não mencionei isso abaixo? Porque 99% de todos os GIFs que eu já encontrei usavam LZW, porque o LZW hoje é um acéfalo no poder da computação e porque este post tenta esclarecer a situação para situações populares, não para o departamento de P&D da ILM. Os fotógrafos usarão seus arquivos para arquivamento, publicação e impressão, portanto, essas são as coisas que considero aqui.
As informações foram verificadas entre os respectivos artigos da Wikipedia, especificações, comparação do Wiki e lista de suporte de metadados do 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
... Opcional; n
... não disponível; y
... acessível; D
... profundidade; *
... Veja abaixo o texto correspondente.
Breve visão geral dos formatos:
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
Os arquivos 'bitmap' são codificados em linhas e geralmente não são compactados; portanto, um único bit flip destruirá apenas uma linha da imagem, desde que não vire o cabeçalho, o que tornará a decodificação mais difícil - tente você mesmo com um HEX editor! . Como não oferece (boa) compactação, os tamanhos dos arquivos são enormes, pois é necessário salvar as informações completas de cada pixel. Devido à sua rigidez, pode ser bom para arquivamentos de longo prazo.
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O 'Better Portable Graphics' (BPG) usa HEVC, que você pode conhecer no codec de vídeo h.265 . Era para ser o sucessor do JPEG, mas nunca ficou popular o suficiente. Com a ascensão do HEIF, que é bastante semelhante em alguns aspectos, mas mais popular, é plausível que o HEIF seja preferido. O HEVC é muito superior em termos de compactação em comparação com o DCT do JPEG - no entanto, ele não se compara bem em todas as taxas de bits, exceto as mais baixas, pois tende a ficar embaçado.
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O OpenEXR foi desenvolvido pela Industrial Lights and Magic (ILM) como um formato intermediário para fluxos de trabalho de VFX. Ele pode conter vários canais em profundidades de bits muito altas, várias imagens e metadados em um arquivo. Oferece algoritmos de compactação diferentes - ou nenhuma compactação. O EXR pode ser comparado ao TIFF - o EXR oferece mais opções, enquanto o TIFF é muito mais popular.
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O 'Free Lossless Image Format' (FLIF) usa um derivado da compressão HEVC que é sem perdas. O FLIF alega ter taxas de compressão extremas em comparação com todos os outros formatos da época - enquanto meus próprios testes me levaram a acreditar nisso, ele realmente precisa de poder de computação para ser utilizável (vários minutos de tempo de codificação para uma única imagem de 24 MP com uma faixa de rosca alta) O hexacore de 4,3 GHz não é tão bom: D) . No entanto, como é um codec jovem, podem surgir melhorias. Oferece suporte para animações, canais alfa, decodificação progressiva e até codificação com perdas (sem perda de geração após a primeira codificação). Só o tempo mostrará se será bem-sucedido e, para ser sincero, espero que sim, pois parece oferecer uma solução única para vários problemas.
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
Enquanto 'Graphics Interchange Format' (GIF) oferece 8 bits por canal por pixel, os reduz a uma paleta de cores de 256 cores (que pode incluir uma "cor de fundo"). É usado principalmente para animações - a única coisa que o PNG não pode fazer melhor, já que o PNG por si só não oferece suporte para animação.
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O 'High Efficiency Image Format' (HEIF) também usa HEVC para compactação. Além dos canais de cores, ele também pode conter um canal alfa ou um mapa de profundidade (usado para efeitos posteriores de profundidade de campo do software ). Além disso, a edição rudimentar pode ocorrer sem perdas. De acordo com as especificações, ele também possui um modo de compactação sem perdas. Como todos os principais sistemas operacionais o suportam, parece o candidato mais provável a uma sucessão de JPEG (se houver algum).
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O 'Joint Photographic Experts Group' (JPEG) é sem dúvida o formato de imagem mais usado atualmente. Ele usa a transformação discreta de cosseno (DCT), que é do tipo com perdas. Há uma especificação sem perdas, mas não é usada com muita frequência. Certos programas podem executar determinadas ações rudimentares (por exemplo, rotação) sem perdas, embora isso também exija que a largura e a altura da imagem sejam divisíveis por 8 (o tamanho do bloco de JPEG) - por exemplo, 800x640 funcionará, 804x643 não. O JPEG não tem opção para salvar imagens em RGB - ele transforma a imagem no espaço de cores YCbCr e muitas vezes reduz as informações de pixel de 4: 4: 4 (todo pixel tem todos os canais) para 4: 2: 0 (todo canal possui luminosidade, mas apenas a cada 4º pixel obtém um valor de Cb / Cr). Como na maioria das conversões do espaço de cores, isso pode levar a diferenças perceptíveis, especialmente em cores extremas. O JPEG é rápido na codificação e não é tão ruim em configurações de alta qualidade, mas para mim as coisas mencionadas acima não me fazem chorar se desaparecerem - elas nos serviram bem, mas os formatos de imagem usados podem ser um pouco mais ... recente. Afinal, os computadores evoluíram bem desde 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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
'JPEG 2000' (JP2k ou JP2) é o sucessor oficial do JPEG. Ele usa wavelets em vez do DCT, que oferece artefatos menos em blocos e, em geral, é mais versátil que o JPEG. Apesar de tudo isso, ele nunca alcançou o 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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O 'intervalo estendido JPEG' (JPEG XR, JXR) é outra tentativa de obter sucesso com o JPEG. Seu espaço de cores YCgCo é superior ao YCbCr porque é totalmente reversível. Embora alguns softwares o suportem, ele também nunca chegou perto da fama de outros formatos.
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O 'Portable Network Graphics' (PNG) foi introduzido como sucessor do GIF. Embora sem perdas por design, os arquivos PNG podem ser otimizados com várias ferramentas, algumas das quais compactarão o arquivo com perdas. O PNG usa a compactação DEFLATE, por isso é bastante eficiente para gráficos (como desenhos CAD, capturas de tela, ...), mas menos eficiente para fotografias. Embora ofereça suporte para metadados, alguns programas têm problemas para lê-los. Obrigado pelo aviso , @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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
'Truevision TGA' / 'TARGA' (TGA) é um formato que eu incluí apenas porque todos parecem conhecê-lo. Foi introduzido em 1984. Ele suporta compressão sem perdas (RLE), que funcionará bem para gráficos, mas não tão bem para fotografias.
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O 'Tagged Image File Format' (TIF ou TIF) também existe há muito tempo. Oferece suporte a camadas (ou seja, várias imagens RGBA empilhadas). Os TIFFs costumam ser usados como arquivos intermediários porque são amplamente suportados e bastante flexíveis em termos de seus recursos.
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
... bits por canal (por exemplo, R, G, B) por pixel. as coisas [ ]
são opcionais; ?
... palpite educado / nenhuma pista.
O 'WebP' usa o VP8 (um formato rival de código aberto do AVC). Assim como o BPG, ele nunca foi lançado em dispositivos de consumo, embora pareça ser usado por muitos serviços de Internet.
(Outros) Coisas a considerar:
Recodificação (perda de geração)
A recodificação de um arquivo sem perdas não altera nada - a recodificação de um arquivo com perdas quase certamente levará a artefatos. O JPEG pode lidar com isso muito bem se você salvar o arquivo na mesma configuração de qualidade em que foi salvo anteriormente.
Este vídeo mostra muito bem a perda de geração - o primeiro quadro mostra o arquivo original, enquanto todos os outros mostram a re-compactação em diferentes configurações de qualidade. (Observe que o FLIF está no modo com perdas, portanto o primeiro quadro parecerá diferente.)
Os artefatos não serão necessariamente uma sentença de morte - por exemplo, para publicação rápida na web ou visualização em dispositivos móveis, pode não ser tão ruim.
Longevidade do codec
Ao escrever esta resposta, pensei: "quem usaria o TARGA hoje em dia, afinal?" e isso me fez pensar: eu nunca hesitaria em dirigir um carro fabricado nos anos 80. Eu não hesitaria em olhar para as fotos tiradas nos anos 80. Eu usaria todas as câmeras feitas naquele tempo. Mas eu não usaria um codec tão antigo. Por quê?
No final, não há como saber se um codec ou outro sobreviverá a um certo período de tempo. Se o HEIF substituir o JPEG em todos os dispositivos de consumo amanhã, quanto tempo levaria para que os programas deixassem de oferecer suporte ao JPEG? Quantas gerações de computadores - e mais importante: sistemas operacionais - existirão antes que você não possa mais abri-los?
Por outro lado, codecs relativamente simples como o TARGA exigem apenas programas relativamente simples para lê-los, enquanto codecs modernos e seus decodificadores têm várias dependências. Portanto, embora a simplicidade seja ruim para a compactação, pode ser boa para o arquivamento em um cenário apocalíptico. Obrigado @lijat por apontar isso!
Na minha opinião, isso precisa de vários ângulos a serem considerados: Qual codec é popular o suficiente para que o suporte não caia imediatamente? Qual codec é suportado pela comunidade de código aberto (porque ninguém manterá formatos proprietários de uma empresa falida)? Além disso, parece que, pelo menos a cada década, deve-se verificar se há necessidade de pular para um codec novo e com melhor suporte (consulte "Recodificação (perda de geração)") - você não desejaria, por exemplo, sua coleção TARGA será ilegível amanhã, certo?
A propósito, isso é especialmente preocupante quando se pensa em arquivos RAW .
Suporte ao programa (Longevidade # 2)
O codec mais popular e melhor não será bom o suficiente se você não puder usá-lo. E embora eu não usasse codecs inferiores apenas porque um programa em particular não o suporta, pode ser ruim usar um codec compatível com apenas um programa.
Quais recursos eu preciso?
Pessoalmente, ainda codifico a maioria dos meus arquivos em JPEG - posso lê-los em qualquer dispositivo e mal consigo (se é que vejo) os artefatos. O 8bit é bom o suficiente para a maioria dos dispositivos e os canais alfa não são realmente necessários apenas para visualizar as imagens.
Para todos os arquivos que não são do tipo "editar uma vez", eu mantenho meus RAWs ou pelo menos TIFFs de 16 bits para que eles ainda possam ser utilizados no futuro.
PSD? DNG?
"Photoshop Document" (PSD) é o formato de estilo TIFF do Photoshop. Tecnicamente, é bastante semelhante ao TIF. Também existe PSB, que é a mesma coisa apenas para tamanhos de arquivo acima de 4 GiB. Não há nada de errado em usá-lo, mas pessoalmente, prefiro o TIFF na medida do possível.
"Negativo digital" (DNG) é uma tentativa de criar um padrão RAW aberto. Embora eu adore a idéia e ela funcione muito bem, observe que alguns editores RAW têm problemas com eles - por exemplo, o Capture One geralmente esquece o balanço de branco da câmera, configurando assim o controle deslizante para 5000K, independentemente do valor real. Outros programas no passado mostraram imagens sólidas em branco ou rosa ou deram um tom magenta. Se o tamanho do arquivo não lhe interessa, você pode incluir o RAW original no seu DNG - se precisar dele novamente, basta extraí-lo novamente. Meus 2 centavos? Experimente com o seu software favorito - e, se funcionar bem, use-o.
Outros formatos?
Como isso já saiu do controle, não quis abordar ainda mais formatos de imagem. No entanto, isso não significa que aqueles que não estão listados não valem a pena considerar.