SAIL tasvirni dekodlash kutubxonasi mavjud

MIT litsenziyasi ostida e'lon qilindi o'zaro platformali tasvirni dekodlash kutubxonasi SAIL. SAIL - bu uzoq vaqt davomida qo'llab-quvvatlanmaydigan tasvirni ko'rish dasturidan C tilida qayta yozilgan kodeklarning rebrendingidir. KSincap, lekin yuqori darajadagi mavhum API va ko'plab yaxshilanishlar bilan. Maqsadli auditoriya: tasvir tomoshabinlari, o'yinni ishlab chiqish, boshqa maqsadlar uchun tasvirlarni xotiraga yuklash. Kutubxona ishlab chiqilmoqda, lekin allaqachon foydalanish mumkin. Rivojlanishning ushbu bosqichida ikkilik va manba kodining muvofiqligi kafolatlanmaydi.

Xususiyatlar:

  • Oddiy, ixcham va tezkor kutubxona C tilida uchinchi shaxslarga bog'liqliksiz (kodeklardan tashqari);
  • Oddiy, tushunarli va ayni paytda barcha ehtiyojlar uchun kuchli API;
  • C++ uchun ulanishlar;
  • Tasvir formatlari dinamik yuklangan kodeklar tomonidan qo'llab-quvvatlanadi;
  • Fayl, xotira yoki hatto o'zingizning ma'lumotlar manbangizdan rasmlarni o'qing (va yozing);
  • Tasvir turini fayl kengaytmasi yoki bo'yicha aniqlash sehrli raqam;
  • Hozirda qo'llab-quvvatlanadigan formatlar: png (o'qish, faqat Windows), JPEG (o'qish, yozish) PNG (o'qish, yozish).
    Yangi formatlarni qoβ€˜shish ustida ish olib borilmoqda. KSquirrel-libs 60 ga yaqin formatlarni u yoki bu tarzda qo'llab-quvvatladi, eng mashhur formatlar birinchi navbatda;

  • O'qish operatsiyalari har doim piksellarni RGB va RGBA formatida chiqarishi mumkin;
  • Ba'zi kodeklar piksellarni yanada kattaroq formatlar ro'yxatida chiqarishi mumkin;
  • Aksariyat kodeklar SOURCE piksellarini ham chiqarishi mumkin. Bu, masalan, CMYK yoki YCCK tasvirlaridan to'liq ma'lumot olishni istaganlar uchun foydalidir;
  • ICC profillarini o'qish va yozish;
  • C, Qt, SDL dagi misollar;
  • Qo'llab -quvvatlanadigan platformalar:
    Windows (o'rnatuvchi), macOS (brew) va Linux (Debian).

SAIL nimani ta'minlamaydi:

  • Rasmni tahrirlash;
  • Asosiy kodeklar (libjpeg va h.k.) tomonidan taqdim etilganlardan boshqa ranglar maydonini aylantirish funksiyalari;
  • Rangni boshqarish funktsiyalari (ICC profillaridan foydalanish va boshqalar)

C tilida dekodlashning eng oddiy misoli:

struct sail_context *kontekst;

SAIL_TRY(sail_init(&context));

struct sail_image *tasvir;
unsigned char *image_pixels;

SAIL_TRY(sail_read(yoΚ»l,
kontekst,
&tasvir,
(void **)&rasm_piksel));

/*
* Bu erda qabul qilingan piksellarni qayta ishlang.
* Buning uchun tasvir->kenglik, tasvir->balandlik, tasvir->har bir_satrga bayt,
* va tasvir->piksel_format.
*/

/* Tozalash */
bepul (tasvir_piksel);
suzib_yo'q qilish_tasvir (tasvir);

API darajalarining qisqacha tavsifi:

  • Yangi boshlovchi: "Men shu JPEGni yuklab olmoqchiman"
  • Murakkab: "Men ushbu animatsion GIFni xotiradan yuklamoqchiman"
  • Chuqur dengizchi: "Men ushbu jonlantirilgan GIF-ni xotiradan yuklamoqchiman va o'zim tanlagan kodeklar va piksel chiqishi ustidan to'liq nazoratga ega bo'lmoqchiman."
  • Texnik g'avvos: "Men yuqoridagi hamma narsani va o'z ma'lumotlar manbamni xohlayman"

Xuddi shu hududdagi to'g'ridan-to'g'ri raqobatchilar:

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

Boshqa kutubxonalardan farqlari:

  • Kutilayotgan ob'ektlar bilan inson API - tasvirlar, palitralar va boshqalar.
  • Aksariyat kodeklar faqat RGB/RGBA piksellaridan ko'proq narsani chiqarishi mumkin.
  • Aksariyat kodeklar RGB ga o'tkazmasdan asl piksellarni chiqarishi mumkin.
  • Siz har qanday tilda kodek yozishingiz mumkin, shuningdek, butun loyihani qayta kompilyatsiya qilmasdan ularni qo'shishingiz/o'chirishingiz mumkin.
  • Asl rasm haqidagi ma'lumotlarni saqlang.
  • "Probing" - bu piksel ma'lumotlarini dekodlashsiz tasvir haqida ma'lumot olish jarayoni.
  • Hajmi va tezligi.

Manba: opennet.ru

a Izoh qo'shish