Biblioteca de decodificação de imagens SAIL disponível
Sob licença do MIT publicado biblioteca de decodificação de imagens multiplataforma SAIL. SAIL é uma reformulação da marca de codecs de um visualizador de imagens há muito não suportado, reescrito em C KSquirrelGenericName, mas com uma API abstrata de alto nível e inúmeras melhorias. Público-alvo: visualizadores de imagens, desenvolvimento de jogos, carregamento de imagens na memória para outros fins. A biblioteca está em desenvolvimento, mas já pode ser utilizada. A compatibilidade do binário e do código-fonte não é garantida neste estágio de desenvolvimento.
Características:
Uma biblioteca simples, compacta e rápida escrita em C sem dependências de terceiros (exceto codecs);
API simples, compreensível e ao mesmo tempo poderosa para todas as necessidades;
Ligações para C++;
Os formatos de imagem são suportados por codecs carregados dinamicamente;
Leia (e grave) imagens de um arquivo, memória ou até mesmo de sua própria fonte de dados;
Determinar o tipo de imagem por extensão de arquivo ou por número mágico;
Formatos atualmente suportados: APNG (leitura, somente Windows), JPEG (leitura, gravação) PNG (leitura, gravação).
O trabalho está em andamento para adicionar novos formatos. KSquirrel-libs suportava cerca de 60 formatos de uma forma ou de outra, os formatos mais populares são os primeiros da fila;
As operações de leitura sempre podem gerar pixels nos formatos RGB e RGBA;
Alguns codecs podem gerar pixels em uma lista ainda maior de formatos;
A maioria dos codecs também pode gerar pixels SOURCE. Isto é útil, por exemplo, para quem deseja obter informações completas de imagens CMYK ou YCCK;
Ler e escrever perfis ICC;
Exemplos em C, Qt, SDL;
Plataformas suportadas:
Windows (instalador), macOS (brew) e Linux (Debian).
O que o SAIL não oferece:
Edição de imagem;
Funções de conversão de espaço de cores diferentes daquelas fornecidas pelos codecs subjacentes (libjpeg, etc.);
Funções de gerenciamento de cores (uso de perfis ICC, etc.)
O exemplo mais simples de decodificação em C:
estrutura vela_context *contexto;
SAIL_TRY(sail_init(&contexto));
struct vela_imagem *imagem;
caractere não assinado *image_pixels;