Die Bilddecodierungsbibliothek SAIL ist verfügbar.

Unter der MIT-Lizenz veröffentlicht eine plattformübergreifende Bilderdecodierungsbibliothek SAIL. SAIL ist eine auf C umgeschriebene Codec-Bibliothek aus einem längst nicht mehr unterstützten Bildbetrachter KSquirrel, jedoch mit einer hochgradig abstrakten API und zahlreichen Verbesserungen. Zielgruppe: Bildbetrachter, Spieleentwicklung, Bildspeicherung im Arbeitsspeicher für andere Zwecke. Die Bibliothek befindet sich in der Entwicklungsphase, ist jedoch bereits einsatzbereit. Binäre Kompatibilität und Quellcodekompatibilität werden in diesem Entwicklungsstadium nicht garantiert.

Möglichkeiten:

  • eine einfache, kompakte und schnelle Bibliothek, die in C ohne externe Abhängigkeiten (außer Codecs) geschrieben wurde;
  • eine einfache, verständliche und zugleich leistungsstarke API für alle Bedürfnisse;
  • Bindings für C++;
  • Bildformate werden durch dynamisch ladbare Codecs unterstützt;
  • Lesen (und Schreiben) von Bildern aus Dateien, dem Speicher oder sogar Ihrer eigenen Datenquelle;
  • Bestimmung des Bildtyps anhand der Dateierweiterung oder durch magische Zahlen;
  • Aktuell unterstützte Formate: APNG (lesen, nur unter Windows), JPEG (lesen, schreiben), PNG (lesen, schreiben).
    Die Arbeit an der Hinzufügung neuer Formate läuft. KSquirrel-libs hat etwa 60 Formate unterstützt, wobei die beliebtesten Formate zuerst in der Warteschlange stehen.
  • Lesevorgänge geben immer Pixel im RGB- und RGBA-Format aus.
  • Einige Codecs können Pixel in einer noch größeren Liste von Formaten ausgeben.
  • Die meisten Codecs können auch die korrespondierenden (SOURCE) Pixel ausgeben. Dies ist nützlich für diejenigen, die vollständige Informationen aus CMYK- oder YCCK-Bildern erhalten möchten.
  • Lesen und Schreiben von ICC-Profilen;
  • Beispiele in C, Qt, SDL.
  • Unterstützte Plattformen:
    Windows (Installer), macOS (brew) und Linux (Debian).

Was SAIL nicht bereitstellt:

  • Bildbearbeitung.
  • Funktionen zur Umwandlung von Farb-Räumen, außer diejenigen, die von den zugrunde liegenden Codecs bereitgestellt werden (libjpeg usw.).
  • Funktionen zur Farbverwaltung (Anwendung von ICC-Profilen usw.).

Ein einfaches Beispiel für das Decodieren in C:

struct sail_context *context;

SAIL_TRY(sail_init(&context));

struct sail_image *image;
unsigned char *image_pixels;

SAIL_TRY(sail_read(path,
context,
&image,
(void **)&image_pixels));

/*
* Hier verarbeiten Sie die erhaltenen Pixel.
* Verwenden Sie dafür image->width, image->height, image->bytes_per_line,
* und image->pixel_format.
*/

/* Очистка */
free(image_pixels);
sail_destroy_image(image);

Kurze Beschreibung der API-Ebenen:

  • Einsteiger: „Ich möchte einfach dieses JPEG laden“
  • Продвинутый: «Я хочу загрузить этот анимированный GIF из памяти»
  • Глубоководный дайвер: «Я хочу загрузить этот анимированный GIF из памяти и иметь полный контроль над выбранными кодеками и форматом отдаваемых пикселей»
  • Технический дайвер: «Я хочу всё что выше, и мой собственный источник данных»

Прямые конкуренты из этой же области:

  • FreeImage
  • DevIL
  • SDL_Image
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Отличия от других библиотек:

  • Человеческий API с ожидаемыми сущностями — изображениями, палитрами и т.д.
  • Большинство кодеков умеют отдавать не только RGB/RGBA пиксели.
  • Большинство кодеков умеют отдавать исходные пиксели без преобразований в RGB.
  • Писать кодеки можно на любом языке, а также добавлять/удалять их без перекомпиляции всего проекта.
  • Сохранение информации об исходном изображении.
  • «Прощупывание» (probing) — получение информации об изображении без декодирования пиксельных данных.
  • Размер и скорость.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster