Biblioteca de decodificación de imaxes SAIL dispoñible

Baixo licenza MIT publicado biblioteca de decodificación de imaxes multiplataforma SAIL. SAIL é un cambio de marca de códecs dun visor de imaxes sen compatibilidade e reescrito en C KSquirro, pero cunha API abstracta de alto nivel e numerosas melloras. Público obxectivo: espectadores de imaxes, desenvolvemento de xogos, carga de imaxes na memoria para outros fins. A biblioteca está en desenvolvemento, pero xa se pode utilizar. A compatibilidade do código binario e do código fonte non está garantida nesta fase de desenvolvemento.

Características:

  • Unha biblioteca sinxela, compacta e rápida escrita en C sen dependencias de terceiros (excepto codecs);
  • API sinxela, comprensible e ao mesmo tempo potente para todas as necesidades;
  • Ligazóns para C++;
  • Os formatos de imaxe son compatibles con códecs cargados dinámicamente;
  • Le (e escribe) imaxes dun ficheiro, memoria ou mesmo da túa propia fonte de datos;
  • Determinar o tipo de imaxe por extensión de ficheiro ou por número máxico;
  • Formatos soportados actualmente: png (ler, só Windows), JPEG (ler, escribir) PNG (ler, escribir).
    Estase traballando para engadir novos formatos. KSquirrel-libs admitiu uns 60 formatos dun xeito ou doutro, os formatos máis populares son os primeiros na liña;

  • As operacións de lectura sempre poden producir píxeles en formato RGB e RGBA;
  • Algúns códecs poden producir píxeles nunha lista aínda maior de formatos;
  • A maioría dos códecs tamén poden emitir píxeles SOURCE. Isto é útil, por exemplo, para aqueles que queren obter información completa das imaxes CMYK ou YCCK;
  • Ler e escribir perfís ICC;
  • Exemplos en C, Qt, SDL;
  • Plataformas compatibles:
    Windows (instalador), macOS (brew) e Linux (Debian).

O que SAIL non ofrece:

  • Edición de imaxes;
  • Funcións de conversión de espazo de cor distintas das proporcionadas polos códecs subxacentes (libjpeg, etc.);
  • Funcións de xestión da cor (uso de perfís ICC, etc.)

O exemplo máis sinxelo de decodificación en C:

struct sail_context *contexto;

SAIL_TRY(sail_init(&context));

struct sail_image *imaxe;
char sen asinar *image_pixels;

SAIL_TRY(sail_read(ruta,
contexto,
&imaxe,
(void **)&image_pixels));

/*
* Aquí procesa os píxeles recibidos.
* Para iso, use imaxe->ancho, imaxe->altura, imaxe->bytes_por_liña,
* e imaxe->formato_píxel.
*/

/* Limpar */
libre (píxeles_imaxe);
imaxe_destruír_vela(imaxe);

Breve descrición dos niveis de API:

  • Novato: "Só quero descargar este JPEG"
  • Avanzado: "Quero cargar este GIF animado da memoria"
  • Deep sea Diver: "Quero cargar este GIF animado da memoria e ter control total sobre os códecs e a saída de píxeles que escolla".
  • Mergullo técnico: "Quero todo o anterior e a miña propia fonte de datos"

Competidores directos da mesma zona:

  • FreeImage
  • DEVIL
  • SDL_Imaxe
  • WIC
  • imlib2
  • Impulso.GIL
  • gdk-pixbuf

Diferenzas con outras bibliotecas:

  • API humana con entidades esperadas: imaxes, paletas, etc.
  • A maioría dos códecs poden emitir máis que píxeles RGB/RGBA.
  • A maioría dos códecs poden producir píxeles orixinais sen conversión a RGB.
  • Podes escribir códecs en calquera idioma, e tamén engadilos/eliminalos sen recompilar todo o proxecto.
  • Conserva información sobre a imaxe orixinal.
  • "Probing" é o proceso de obter información sobre unha imaxe sen decodificar os datos de píxeles.
  • Tamaño e velocidade.

Fonte: opennet.ru

Engadir un comentario