Biblioteca de decodificación de imágenes SAIL disponible

Bajo licencia MIT publicado por Biblioteca de decodificación de imágenes multiplataforma SAIL. SAIL es un cambio de marca de códecs de un visor de imágenes que no se admite desde hace mucho tiempo reescrito en C KSardilla, pero con una API abstracta de alto nivel y numerosas mejoras. Público objetivo: visores de imágenes, desarrollo de juegos, carga de imágenes en la memoria para otros fines. La biblioteca está en desarrollo, pero ya se puede utilizar. La compatibilidad del código fuente y binario no está garantizada en esta etapa de desarrollo.

Características:

  • Una biblioteca simple, compacta y rápida escrita en C sin dependencias de terceros (excepto códecs);
  • API simple, comprensible y al mismo tiempo potente para todas las necesidades;
  • Enlaces para C++;
  • Los formatos de imagen son compatibles con códecs cargados dinámicamente;
  • Lea (y escriba) imágenes de un archivo, memoria o incluso su propia fuente de datos;
  • Determinar el tipo de imagen por extensión de archivo o por número mágico;
  • Formatos actualmente soportados: APNG (lectura, solo Windows), JPEG (lectura, escritura) PNG (lectura, escritura).
    Se está trabajando para añadir nuevos formatos. KSquirrel-libs admitía alrededor de 60 formatos de una forma u otra, los formatos más populares son los primeros en la fila;

  • Las operaciones de lectura siempre pueden generar píxeles en formato RGB y RGBA;
  • Algunos códecs pueden generar píxeles en una lista de formatos aún mayor;
  • La mayoría de los códecs también pueden generar píxeles SOURCE. Esto es útil, por ejemplo, para quienes desean obtener información completa de imágenes CMYK o YCCK;
  • Lectura y escritura de perfiles ICC;
  • Ejemplos en C, Qt, SDL;
  • Plataformas compatibles:
    Windows (instalador), macOS (brew) y Linux (Debian).

Lo que SAIL no proporciona:

  • Edición de imagen;
  • Funciones de conversión del espacio de color distintas de las proporcionadas por los códecs subyacentes (libjpeg, etc.);
  • Funciones de gestión del color (uso de perfiles ICC, etc.)

El ejemplo más simple de decodificación en C:

estructura vela_context *contexto;

SAIL_TRY(vela_init(&contexto));

estructura vela_imagen *imagen;
carácter sin firmar *image_pixels;

SAIL_TRY(vela_read(ruta,
contexto,
&imagen,
(void **)&image_pixels));

/*
* Aquí procesa los píxeles recibidos.
* Para hacer esto, use imagen->ancho, imagen->alto, imagen->bytes_por_línea,
* e imagen->pixel_format.
*/

/* Limpiar */
gratis (imagen_pixels);
vela_destroy_image(imagen);

Breve descripción de los niveles de API:

  • Novato: "Solo quiero descargar este JPEG"
  • Avanzado: "Quiero cargar este GIF animado desde la memoria"
  • Buzo de aguas profundas: "Quiero cargar este GIF animado desde la memoria y tener control total sobre los códecs y la salida de píxeles que elija".
  • Buceador Técnico: “Quiero todo lo de arriba y mi propia fuente de datos”

Competidores directos de la misma zona:

  • FreeImage
  • Demonio
  • Imagen_SDL
  • WIC
  • imlib2
  • Impulsar.GIL
  • gdk-pixbuf

Diferencias con otras bibliotecas:

  • API humana con entidades esperadas: imágenes, paletas, etc.
  • La mayoría de los códecs pueden generar más que solo píxeles RGB/RGBA.
  • La mayoría de los códecs pueden generar píxeles originales sin conversión a RGB.
  • Puede escribir códecs en cualquier idioma y también agregarlos o eliminarlos sin tener que volver a compilar todo el proyecto.
  • Conservar información sobre la imagen original.
  • "Sondeo" es el proceso de obtener información sobre una imagen sin decodificar los datos de los píxeles.
  • Tamaño y velocidad.

Fuente: opennet.ru

Añadir un comentario