O problema: por que as cores parecem erradas
Você tira uma foto com o seu iPhone. Ela fica perfeita na tela — vermelhos vibrantes, verdes intensos, tons de pele naturais. Você transfere o arquivo HEIC para o PC com Windows, converte para JPG, e algo fica estranho. As cores parecem desbotadas ou, às vezes, supersaturadas, ou a imagem inteira tem um sutil desvio de cor que a faz parecer "errada" mesmo que você não consiga apontar exatamente o que mudou.
Isso não é perda de qualidade por compressão. É uma incompatibilidade de color space — um dos problemas mais comuns e menos compreendidos na conversão HEIC para JPG. O problema tem duas causas distintas que muitas vezes se somam:
- Incompatibilidade entre Display P3 e sRGB color space — fotos do iPhone são capturadas em um color space mais amplo do que a maioria dos monitores e softwares espera.
- Tone mapping de HDR para SDR — iPhones modernos capturam dados HDR que precisam ser "achatados" para telas padrão.
Entender esses dois mecanismos é a chave para obter cores precisas sempre.
Color profiles explicados: Display P3 vs sRGB
Toda imagem digital contém valores de cor — números que representam a intensidade de vermelho, verde e azul de cada pixel. Mas esses números não fazem sentido sem um color profile (também chamado de color space) que defina como eles realmente aparecem na tela.
Desde 2016, todo iPhone captura fotos no color space Display P3. É um padrão de gamut amplo que cobre cerca de 50 % mais cores que o sRGB, o color space usado pela maioria dos monitores Windows, navegadores e softwares.
| Propriedade | Display P3 (iPhone) | sRGB (maioria dos monitores) |
|---|---|---|
| Cobertura do gamut | ~45,5 % do espectro visível | ~33,3 % do espectro visível |
| Faixa de vermelhos | Vermelhos mais profundos e saturados | Vermelhos padrão |
| Faixa de verdes | Verdes mais amplos e vívidos | Verdes padrão |
| Faixa de azuis | Semelhante ao sRGB | Semelhante ao P3 |
| Usado por | iPhone, iPad, MacBook Pro, cinema DCI | Windows, web, maioria dos monitores, impressoras |
O problema ocorre durante a conversão. Quando um arquivo HEIC gravado em Display P3 é convertido para JPG, o conversor precisa transformar esses valores de cor P3 em valores sRGB. O gamut mais amplo do P3 significa que algumas cores literalmente não existem em sRGB — elas precisam ser aproximadas. Se o conversor lidar com isso incorretamente (ou ignorar totalmente o color profile), o resultado é um de três problemas:
- Desbotado — valores P3 são interpretados como sRGB sem transformação. Como o P3 codifica faixas mais amplas, os números brutos correspondem a valores sRGB menos saturados.
- Supersaturado — alguns conversores "esticam" os valores P3 para preencher o gamut sRGB, empurrando cores já saturadas além da aparência natural.
- Desvio de cor — vermelhos puxam para laranja, verdes para amarelo ou tons de pele ganham uma tonalidade artificial. Isso ocorre quando o color profile é removido sem conversão.
Tone mapping de HDR para SDR
A partir do iPhone 12 (2020), a Apple captura fotos com metadados HDR (especificamente Dolby Vision / Apple Gain Map). Isso adiciona uma camada de reforço de brilho sobre a imagem base, permitindo que telas compatíveis com HDR mostrem destaques mais brilhantes e uma faixa dinâmica maior do que fotos comuns.
JPG é um formato somente SDR. Ele não tem a noção de dados de brilho HDR. Ao converter HEIC para JPG, as informações HDR precisam passar por "tone mapping" até SDR — a ampla faixa de brilho precisa ser comprimida na faixa mais estreita que o SDR consegue representar.
Um mau tone mapping causa problemas visuais adicionais:
- Destaques estourados — áreas claras (nuvens, reflexos, fontes de luz) que pareciam detalhadas em HDR aparecem como branco puro no JPG.
- Sombras chapadas — áreas escuras que tinham detalhe visível em HDR ficam uniformemente escuras em SDR.
- Contraste reduzido — a imagem geral parece "chapada" em comparação com a tela do iPhone, porque a faixa de brilho HDR foi comprimida.
A combinação da compressão de gamut P3-para-sRGB e do tone mapping HDR-para-SDR é o que faz os JPGs convertidos parecerem nitidamente diferentes dos HEICs originais — mesmo quando o conversor trata corretamente resolução, nitidez e compressão.
Como uma conversão correta lida com color profiles
Uma conversão HEIC para JPG tecnicamente correta envolve três passos que muitos conversores simples pulam:
1. Ler o perfil ICC incorporado
Todo arquivo HEIC vindo de um iPhone contém um color profile ICC que identifica o color space (Display P3) e fornece os dados matemáticos da transformação. Um conversor correto lê esse perfil em vez de assumir sRGB.
2. Transformar as cores de P3 para sRGB
Usando o perfil ICC, o conversor realiza uma transformação matemática de color space que mapeia cada pixel das coordenadas P3 para coordenadas sRGB. Não é uma fórmula simples — envolve multiplicação matricial através de um espaço de conexão independente de dispositivo (geralmente CIE XYZ ou CIE LAB).
Dois rendering intents são comumente usados:
- Perceptual — comprime todo o gamut proporcionalmente. Todas as cores se deslocam um pouco para que as cores P3 fora do gamut caibam em sRGB mantendo as relações relativas. Ideal para fotografias.
- Colorimétrico relativo — mantém cores dentro do gamut idênticas e corta cores fora do gamut para o limite sRGB mais próximo. Preserva a precisão para a maioria das cores, mas pode perder saturação em vermelhos e verdes extremos.
3. Incorporar o perfil ICC sRGB no JPG de saída
O JPG de saída deve incluir um perfil ICC sRGB incorporado para que visualizadores e editores saibam como interpretar os valores de cor. Remover o perfil (um erro comum) faz programas diferentes fazerem suposições diferentes, gerando exibição de cor inconsistente.
O que acontece quando os perfis são removidos? Sem um perfil ICC, o software assume sRGB por padrão. Se os dados de pixel já foram corretamente transformados para sRGB, remover o perfil é inofensivo. Mas se os dados ainda estão em P3 (nenhuma transformação foi feita), os valores P3 são interpretados erroneamente como sRGB, causando a aparência desbotada. Essa é, de longe, a causa mais comum de problemas de cor na conversão HEIC.
O que o nosso conversor faz
O pipeline HEIC para JPG do CleverUtils trata os color profiles corretamente em cada etapa:
- heif-convert decodifica o arquivo HEIC preservando o perfil ICC incorporado (Display P3). Os dados brutos de pixel e os metadados do color space são passados intactos para o estágio de processamento.
- ImageMagick executa a conversão de color space P3 para sRGB com a diretiva
-colorspace sRGB. Ele lê o perfil ICC de origem, calcula a transformação através do espaço de conexão CIE e escreve valores de pixel sRGB mapeados corretamente. - O JPG de saída é codificado em qualidade 92 com o perfil ICC sRGB incorporado, garantindo exibição de cor consistente em todos os visualizadores, navegadores e sistemas operacionais.
O resultado é um JPG que parece como a sua foto deveria ser — cores naturais que correspondem ao que você viu na tela do iPhone, corretamente adaptadas para telas sRGB.
Dicas para os melhores resultados de cor
Mesmo com o tratamento correto do color profile, há algumas coisas que você pode fazer para obter as cores mais precisas:
- Use qualidade 90 ou superior — configurações de qualidade JPG mais baixas introduzem artefatos de compressão que afetam a precisão das cores em gradientes e tons sutis. Qualidade 92 (padrão do CleverUtils) é o ponto ideal.
- Confira em um monitor calibrado — a maioria dos monitores de consumo não é calibrada em cor e pode exibir conteúdo sRGB com uma leve dominante. Se a precisão de cor importa, considere um calibrador de hardware (como Datacolor Spyder ou X-Rite).
- Visualize em vários aplicativos — alguns aplicativos do Windows (como o antigo Windows Photo Viewer) ignoram perfis ICC. Teste seus JPGs convertidos no Windows Photos, num navegador (o Chrome respeita perfis ICC) e no seu editor de fotos para confirmar a consistência de cor.
- Evite reconverter — cada conversão com perda-para-perda acrescenta uma geração de degradação de qualidade e cor. Converta uma única vez a partir do HEIC original e mantenha esse JPG como cópia mestre.
- Preserve o HEIC original — se a máxima fidelidade de cor importa (trabalho profissional, impressão), mantenha o arquivo HEIC como cópia de arquivo. Ele contém o gamut P3 completo e os dados HDR que não podem ser recuperados a partir de um JPG.