XCF (GIMP) visualizador
Formato em camadas nativo do GIMP — pré-visualização estrutural com árvore de camadas.
XCF é o formato nativo de edição totalmente em camadas do GIMP — máscaras, canais, paths, parasites, mais precisão arbitrária (inteiro de 8 bits até float de 32 bits). Não existe hoje um renderizador do lado do navegador (o pacote xcf-js referenciado em tutoriais nunca chegou ao npm; portar o compositor completo do GIMP está fora do âmbito), mas a especificação do formato XCF é pública, por isso podemos analisar o cabeçalho nós próprios. Extraímos a versão do GIMP que escreveu o ficheiro, dimensões da tela, tipo base (RGB/grayscale/indexed), precisão, cada ponteiro de camada e os primeiros ~24 nomes e tamanhos de camada percorrendo a string de nome de cada bloco de camada.
- Porque é que a árvore de camadas é mostrada mas não a composição real?
- Renderizar uma composição XCF requer correr o motor de composição em camadas completo do GIMP: modos de mistura, máscaras de camada, camadas de grupo, dithering para o tipo base indexed e descodificação do formato RLE por tile usado para armazenar dados de píxeis. São centenas de milhares de linhas de código C no próprio GIMP. Analisamos o cabeçalho e o índice de camadas em TypeScript puro para que possa verificar o conteúdo, mas para os píxeis reais precisa do GIMP, Krita (que consegue abrir XCF para visualização) ou de uma conversão server-side com ImageMagick.
- Que versões XCF são suportadas pelo inspetor?
- Lemos a tag de versão dos 5 bytes a seguir à magic — "file" para o XCF1 original (GIMP 2.4 pré-2008), depois "v001"/"v002"/… para revisões mais recentes. v004 acrescentou a palavra de precisão para suporte de alta profundidade de bits. O nosso parser lida com todas as versões até v013 (GIMP 2.10/3.0 atual); a iteração de ponteiros de camada funciona da mesma forma entre versões.
- Como obtenho uma imagem normal a partir de um ficheiro XCF?
- Pelo próprio GIMP: Ficheiro → Exportar Como → PNG/JPEG/TIFF. Linha de comandos: gimp --batch '(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE "in.xcf" "in.xcf")))) (file-png-save RUN-NONINTERACTIVE image (car (gimp-image-flatten image)) "out.png" "out" 0 9 1 1 1 1 1))' -b '(gimp-quit 0)'. O Krita também consegue abrir XCF diretamente. O ImageMagick lê XCF se tiver sido compilado com suporte para GIMP.
- Tratam os campos de precisão e tipo base?
- Sim — o inspetor descodifica a palavra de tipo base (0 = RGB, 1 = Grayscale, 2 = Indexed) e, para ficheiros v004+, a palavra de precisão (8 bits linear / não linear / percetual, 16 bits inteiro ou half-float, 32 bits float, 64 bits double). XCFs de alta profundidade de bits do GIMP 2.10+ que usam float de 32 bits internamente para composição são corretamente identificados.
- .svgSVGScalable Vector Graphics.Abrir
- .pngPNGImagem raster sem perdas.Abrir
- .jpgJPEGImagem fotográfica com perdas.Abrir
- .gifGIFImagem raster animada/estática.Abrir
- .webpWebPImagem moderna com perdas/sem perdas da Google.Abrir
- .avifAVIFFormato de imagem moderno baseado em AV1.Abrir
- .bmpBMPBitmap Windows não comprimido.Abrir
- .icoICOÍcone Windows multi-resolução.Abrir