SAIL képdekódoló könyvtár elérhető

MIT licenc alatt közzétett többplatformos képdekódoló könyvtár SAIL. A SAIL egy régóta nem támogatott képnézegetőből származó kodekek márkaváltása, C nyelven átírva Mókus, de magas szintű absztrakt API-val és számos fejlesztéssel. Célközönség: képnézegetők, játékfejlesztés, képek memóriába töltése egyéb célokra. A könyvtár fejlesztés alatt áll, de már használható. A bináris és a forráskód kompatibilitás ebben a fejlesztési szakaszban nem garantált.

Jellemzők:

  • Egy egyszerű, kompakt és gyors könyvtár C nyelven, harmadik féltől származó függőségek nélkül (kivéve kodekek);
  • Egyszerű, érthető és ugyanakkor hatékony API minden igényhez;
  • Kötések C++-hoz;
  • A képformátumokat dinamikusan betöltött kodekek támogatják;
  • Képek olvasása (és írása) fájlból, memóriából vagy akár saját adatforrásból;
  • A kép típusának meghatározása fájlkiterjesztés szerint vagy szerint mágikus szám;
  • Jelenleg támogatott formátumok: png (olvasás, csak Windows), JPEG (olvasás, írás) PNG (olvasás, írás).
    Folyamatban van az új formátumok hozzáadásával kapcsolatos munka. A KSquirrel-libs körülbelül 60 formátumot támogatott így vagy úgy, a legnépszerűbb formátumok az elsők a sorban;

  • Az olvasási műveletek mindig képesek RGB és RGBA formátumú pixeleket kiadni;
  • Egyes kodekek még nagyobb formátumlistában képesek kiadni a képpontokat;
  • A legtöbb kodek SOURCE pixeleket is képes kiadni. Ez például azoknak hasznos, akik teljes információt szeretnének kapni a CMYK vagy YCCK képekből;
  • ICC profilok olvasása és írása;
  • Példák C, Qt, SDL nyelven;
  • Támogatott platformok:
    Windows (telepítő), macOS (brew) és Linux (Debian).

Amit a SAIL nem biztosít:

  • Képszerkesztés;
  • A mögöttes kodekek által biztosítottaktól eltérő színtér-konverziós funkciók (libjpeg stb.);
  • Színkezelési funkciók (ICC profilok használata stb.)

A legegyszerűbb példa a C dekódolásra:

struct sail_context *context;

SAIL_TRY(sail_init(&context));

struct sail_image *image;
unsigned char *image_pixels;

SAIL_TRY(sail_read(útvonal,
kontextus,
&kép,
(érvénytelen **)&kép_pixel));

/*
* Itt dolgozza fel a fogadott képpontokat.
* Ehhez használja az image->width, image->height, image->bytes_per_line,
* és kép->pixel_formátum.
*/

/* Takarítás */
free(kép_pixelek);
sail_destroy_image(image);

Az API szintek rövid leírása:

  • Újonc: "Csak szeretném letölteni ezt a JPEG-et"
  • Speciális: "A memóriából szeretném betölteni ezt az animált GIF-et"
  • Mélytengeri búvár: "Szeretném betölteni ezt az animált GIF-et a memóriából, és teljes mértékben irányítani szeretném a választott kodekeket és pixelkimenetet."
  • Technikai búvár: "Mindent akarok, ami fent van, és a saját adatforrásomat"

Közvetlen versenytársak azonos területről:

  • FreeImage
  • Ördög
  • SDL_Image
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Különbségek a többi könyvtárhoz képest:

  • Emberi API várt entitásokkal – képek, paletták stb.
  • A legtöbb kodek nem csak RGB/RGBA képpontokat képes kiadni.
  • A legtöbb kodek képes eredeti pixeleket kiadni RGB-be átalakítás nélkül.
  • Bármilyen nyelven írhat kodekeket, és hozzáadhatja/eltávolíthatja azokat anélkül, hogy a teljes projektet újrafordítaná.
  • Az eredeti kép adatainak megőrzése.
  • A „próbálás” az a folyamat, amelynek során információt nyerünk egy képről a pixeladatok dekódolása nélkül.
  • Méret és sebesség.

Forrás: opennet.ru

Hozzászólás