Pustaka dekoding gambar SAIL kasedhiya

Ing lisensi MIT diterbitake perpustakaan dekoding gambar cross-platform SAIL. SAIL minangka rebranding codec saka panampil gambar sing wis suwe ora didhukung sing ditulis maneh ing C KSquirrel, nanging kanthi API abstrak tingkat dhuwur lan akeh dandan. Target pamirsa: pamirso gambar, pangembangan game, loading gambar menyang memori kanggo tujuan liyane. Perpustakaan iki lagi dikembangake, nanging wis bisa digunakake. Kompatibilitas binar lan kode sumber ora dijamin ing tahap pangembangan iki.

Fitur:

  • Pustaka sing prasaja, kompak lan cepet ditulis ing C tanpa dependensi pihak katelu (kajaba codec);
  • Prasaja, dingerteni lan ing wektu sing padha API kuat kanggo kabeh kabutuhan;
  • Bindings kanggo C++;
  • Format gambar didhukung dening codec sing dimuat kanthi dinamis;
  • Maca (lan nulis) gambar saka file, memori, utawa malah sumber data sampeyan dhewe;
  • Nemtokake jinis gambar kanthi ekstensi file, utawa kanthi nomer sihir;
  • Format sing didhukung saiki: png (maca, Windows mung), JPEG (maca, nulis) PNG (maca, nulis).
    Pakaryan lagi ditindakake kanggo nambah format anyar. KSquirrel-libs didhukung babagan format 60 kanthi cara siji utawa liyane, format sing paling populer ana ing baris pisanan;

  • Operasi maca bisa tansah output piksel ing RGB lan RGBA format;
  • Sawetara codec bisa ngasilake piksel ing dhaptar format sing luwih gedhe;
  • Umume codec uga bisa ngasilake piksel SOURCE. Iki migunani, contone, kanggo wong-wong sing pengin njaluk informasi lengkap saka gambar CMYK utawa YCCK;
  • Maca lan nulis profil ICC;
  • Conto ing C, Qt, SDL;
  • Platform sing didhukung:
    Windows (installer), macOS (brew) lan Linux (Debian).

Apa SAIL ora nyedhiyakake:

  • Suntingan gambar;
  • Fungsi konversi ruang warna saliyane sing diwenehake dening codec dhasar (libjpeg, lsp.);
  • Fungsi manajemen warna (nggunakake profil ICC, lsp.)

Conto paling gampang decoding ing C:

struct sail_context *konteks;

SAIL_TRY(sail_init(&konteks));

struct sail_image *gambar;
unsigned char *gambar_piksel;

SAIL_TRY(sail_read(path,
konteks,
&gambar,
(kosong **)&image_piksel));

/*
* Ing kene proses piksel sing ditampa.
* Kanggo nindakake iki, gunakake image->width, image->dhuwur, image->bytes_per_line,
* lan gambar->format_piksel.
*/

/* Reresik */
gratis (piksel_gambar);
sail_destroy_image(gambar);

Katrangan singkat babagan level API:

  • Newbie: "Aku mung pengin ngundhuh JPEG iki"
  • Lanjut: "Aku pengin mbukak GIF animasi iki saka memori"
  • Penyelam segara jero: "Aku pengin mbukak GIF animasi iki saka memori lan duwe kontrol lengkap babagan codec lan output piksel sing aku pilih."
  • Penyelam Teknis: "Aku pengin kabeh ing ndhuwur, lan sumber dataku dhewe"

Saingan langsung saka wilayah sing padha:

  • Gambar Gratis
  • DevIL
  • SDL_Gambar
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Bedane karo perpustakaan liyane:

  • API manungsa kanthi entitas sing dikarepake - gambar, palet, lsp.
  • Umume codec bisa ngasilake luwih saka mung piksel RGB / RGBA.
  • Umume codec bisa ngasilake piksel asli tanpa konversi menyang RGB.
  • Sampeyan bisa nulis codec ing basa apa wae, lan uga nambah / mbusak tanpa ngumpulake kabeh proyek.
  • Simpen informasi babagan gambar asli.
  • "Probing" yaiku proses njupuk informasi babagan gambar tanpa dekoding data piksel.
  • Ukuran lan kacepetan.

Source: opennet.ru

Add a comment