Biblioteca di decodificazione di l'imagine SAIL dispunibule

Sottu licenza MIT publicatu libreria di decodificazione d'imaghjini multipiattaforma SAIL. SAIL hè un rebranding di codecs da un visore d'imaghjini longu senza supportu riscritto in C KSquiru, ma cù una API astratta d'altu livellu è numerosi miglioramenti. U publicu di destinazione: visori di l'imaghjini, sviluppu di u ghjocu, caricate l'imaghjini in memoria per altri scopi. A biblioteca hè in sviluppu, ma hè digià utilizable. A cumpatibilità di u codice binari è fonte ùn hè micca garantita in questa fase di sviluppu.

Funzioni:

  • Una biblioteca simplice, compacta è veloce scritta in C senza dipendenze di terzu (eccettu codecs);
  • API simplice, comprensibile è à u stessu tempu putente per tutti i bisogni;
  • Bindings per C++;
  • I formati di l'imaghjini sò supportati da codecs caricati dinamicamente;
  • Leghjite (è scrive) imagine da un schedariu, memoria, o ancu a vostra propria fonte di dati;
  • Determinà u tipu d'imaghjini per estensione di u schedariu, o da numeru magicu;
  • Formati attualmente supportati: png (leghje, solu Windows), JPEG (leghje, scrive) PNG (leghje, scrive).
    U travagliu hè in corso per aghjunghje novi formati. KSquirrel-libs supportatu circa 60 furmati in una manera o un altru, i furmati cchiù pupulari sò prima in linea;

  • L'operazioni di lettura ponu sempre produzzione di pixel in u formatu RGB è RGBA;
  • Certi codecs ponu pruduce pixel in una lista ancu più grande di formati;
  • A maiò parte di i codecs ponu ancu pruduce pixel SOURCE. Questu hè utile, per esempiu, per quelli chì volenu acquistà infurmazione completa da l'imaghjini CMYK o YCCK;
  • Lecture è scrittura di profili ICC;
  • Esempii in C, Qt, SDL;
  • Piattaforme supportate:
    Windows (installatore), macOS (brew) è Linux (Debian).

Ciò chì SAIL ùn furnisce micca:

  • Edizione di l'imaghjini;
  • Funzioni di cunversione di u spaziu di culore altru da quelli furniti da i codec sottostanti (libjpeg, etc.);
  • Funzioni di gestione di u culore (usu di profili ICC, etc.)

L'esempiu più simplice di decodificazione in C:

struct sail_context *cuntestu;

SAIL_TRY(sail_init(&context));

struct sail_image *image;
char unsigned *image_pixels;

SAIL_TRY(sail_read(path,
cuntestu,
& imagine,
(void **)&image_pixels));

/*
* Quì processà i pixel ricevuti.
* Per fà questu, utilizate image->width, image->height, image->bytes_per_line,
* è image->pixel_format.
*/

/* Pulì */
free (image_pixels);
sail_destroy_image (imagine);

Breve descrizzione di i livelli API:

  • Newbie: "Vogliu solu scaricà stu JPEG"
  • Avanzatu: "Vogliu carcà stu GIF animatu da a memoria"
  • Diver di mare profondu: "Vogliu carricà stu GIF animatu da a memoria è avè un cuntrollu tutale di i codecs è di a pruduzzioni di pixel chì sceglite."
  • Technical Diver: "Vogliu tuttu sopra, è a mo propria fonte di dati"

Cuncurrenti diretti da a stessa zona:

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

Differenze da altre biblioteche:

  • API umanu cù entità previste - imagine, palette, etc.
  • A maiò parte di i codec ponu pruduce più cà solu pixel RGB / RGB.
  • A maiò parte di i codecs ponu pruduce pixel originali senza cunversione in RGB.
  • Pudete scrive codecs in ogni lingua, è ancu aghjunghje / sguassate senza recompilà tuttu u prughjettu.
  • Preserve l'infurmazioni nantu à l'imaghjini originale.
  • "Probing" hè u prucessu di ottene infurmazioni nantu à una maghjina senza decodificà i dati di pixel.
  • Taglia è rapidità.

Source: opennet.ru

Add a comment