Διατίθεται βιβλιοθήκη αποκωδικοποίησης εικόνων SAIL

Με άδεια MIT που δημοσιεύθηκε βιβλιοθήκη αποκωδικοποίησης εικόνας πολλαπλών πλατφορμών SAIL. Το SAIL είναι μια αλλαγή επωνυμίας κωδικοποιητών από ένα πρόγραμμα προβολής εικόνων που δεν υποστηρίζεται για μεγάλο χρονικό διάστημα, το οποίο έχει ξαναγραφεί σε C KSquirrel, αλλά με ένα αφηρημένο API υψηλού επιπέδου και πολλές βελτιώσεις. Κοινό-στόχος: θεατές εικόνων, ανάπτυξη παιχνιδιών, φόρτωση εικόνων στη μνήμη για άλλους σκοπούς. Η βιβλιοθήκη είναι υπό ανάπτυξη, αλλά είναι ήδη αξιοποιήσιμη. Η συμβατότητα δυαδικού και πηγαίου κώδικα δεν είναι εγγυημένη σε αυτό το στάδιο ανάπτυξης.

χαρακτηριστικά:

  • Μια απλή, συμπαγής και γρήγορη βιβλιοθήκη γραμμένη σε C χωρίς εξαρτήσεις τρίτων (εκτός από κωδικοποιητές).
  • Απλό, κατανοητό και ταυτόχρονα ισχυρό API για όλες τις ανάγκες.
  • Δεσμοί για C++;
  • Οι μορφές εικόνας υποστηρίζονται από κωδικοποιητές που φορτώνονται δυναμικά.
  • Διαβάστε (και γράψτε) εικόνες από ένα αρχείο, μνήμη ή ακόμα και τη δική σας πηγή δεδομένων.
  • Προσδιορισμός του τύπου εικόνας κατά επέκταση αρχείου ή κατά μαγικός αριθμός;
  • Μορφές που υποστηρίζονται αυτήν τη στιγμή: png (για ανάγνωση, μόνο για Windows), JPEG (ανάγνωση, εγγραφή) PNG (ανάγνωση, εγγραφή).
    Γίνονται εργασίες για την προσθήκη νέων μορφών. Το KSquirrel-libs υποστήριζε περίπου 60 μορφές με τον ένα ή τον άλλο τρόπο, οι πιο δημοφιλείς μορφές είναι πρώτες στη σειρά.

  • Οι λειτουργίες ανάγνωσης μπορούν πάντα να εξάγουν pixel σε μορφή RGB και RGBA.
  • Ορισμένοι κωδικοποιητές μπορούν να εξάγουν pixel σε μια ακόμη μεγαλύτερη λίστα μορφών.
  • Οι περισσότεροι κωδικοποιητές μπορούν επίσης να εξάγουν εικονοστοιχεία SOURCE. Αυτό είναι χρήσιμο, για παράδειγμα, για όσους θέλουν να λάβουν πλήρεις πληροφορίες από εικόνες CMYK ή YCCK.
  • Ανάγνωση και σύνταξη προφίλ ICC.
  • Παραδείγματα σε C, Qt, SDL.
  • Υποστηριζόμενες πλατφόρμες:
    Windows (πρόγραμμα εγκατάστασης), macOS (brew) και Linux (Debian).

Τι δεν παρέχει η SAIL:

  • Επεξεργασία εικόνας;
  • Λειτουργίες μετατροπής χρωματικού χώρου εκτός από αυτές που παρέχονται από υποκείμενους κωδικοποιητές (libjpeg, κ.λπ.).
  • Λειτουργίες διαχείρισης χρωμάτων (χρήση προφίλ ICC, κ.λπ.)

Το απλούστερο παράδειγμα αποκωδικοποίησης στο C:

struct sail_context *context;

SAIL_TRY(sail_init(&context));

struct sail_image *image;
ανυπόγραφο char *image_pixels;

SAIL_TRY(sail_read(διαδρομή,
συμφραζόμενα,
&εικόνα,
(κενό **)&image_pixels));

/*
* Εδώ επεξεργαστείτε τα ληφθέντα pixel.
* Για να το κάνετε αυτό, χρησιμοποιήστε image->width, image->height, image->bytes_per_line,
* και εικόνα->μορφή_pixel.
*/

/* Καθάρισε */
δωρεάν (εικόνα_pixels);
sail_destroy_image(image);

Σύντομη περιγραφή των επιπέδων API:

  • Νέος: "Θέλω απλώς να κατεβάσω αυτό το JPEG"
  • Για προχωρημένους: "Θέλω να φορτώσω αυτό το κινούμενο GIF από τη μνήμη"
  • Deep sea diver: "Θέλω να φορτώσω αυτό το κινούμενο GIF από τη μνήμη και να έχω τον πλήρη έλεγχο των κωδικοποιητών και της εξόδου pixel που επιλέγω."
  • Τεχνικός Δύτης: «Θέλω τα πάντα παραπάνω και τη δική μου πηγή δεδομένων»

Άμεσοι ανταγωνιστές από την ίδια περιοχή:

  • Δωρεάν Εικόνα
  • Διάβολος
  • SDL_Image
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Διαφορές από άλλες βιβλιοθήκες:

  • Ανθρώπινο API με αναμενόμενες οντότητες - εικόνες, παλέτες κ.λπ.
  • Οι περισσότεροι κωδικοποιητές μπορούν να παράγουν περισσότερα από RGB/RGBA pixel.
  • Οι περισσότεροι κωδικοποιητές μπορούν να εξάγουν πρωτότυπα pixel χωρίς μετατροπή σε RGB.
  • Μπορείτε να γράψετε κωδικοποιητές σε οποιαδήποτε γλώσσα και επίσης να τους προσθέσετε/αφαιρέσετε χωρίς να κάνετε εκ νέου μεταγλώττιση ολόκληρου του έργου.
  • Διατηρήστε πληροφορίες σχετικά με την αρχική εικόνα.
  • Η "ανίχνευση" είναι η διαδικασία λήψης πληροφοριών σχετικά με μια εικόνα χωρίς αποκωδικοποίηση των δεδομένων pixel.
  • Μέγεθος και ταχύτητα.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο