SAIL сүрөттүн коддоо китепканасы жеткиликтүү

MIT лицензиясы боюнча жарыяланган кайчылаш платформа сүрөттүн коддоо китепканасы SAIL. SAIL - C тилинде кайра жазылган, көптөн бери колдоого алынбаган сүрөт көрүүчүнүн кодектеринин ребрендинги. KSquirrel, бирок жогорку деңгээлдеги абстракттуу API жана көптөгөн өркүндөтүүлөр менен. Максаттуу аудитория: сүрөт көрүүчүлөр, оюн иштеп чыгуу, башка максаттар үчүн сүрөттөрдү эстутумга жүктөө. Китепкана иштеп чыгууда, бирок буга чейин колдонууга болот. Бинардык жана баштапкы коддун шайкештиги өнүгүүнүн бул этабында кепилденбейт.

өзгөчөлүктөрү:

  • Үчүнчү тараптын көз карандылыгы жок C тилинде жазылган жөнөкөй, компакт жана тез китепкана (кодектерден тышкары);
  • Жөнөкөй, түшүнүктүү жана ошол эле учурда бардык муктаждыктар үчүн күчтүү API;
  • C++ үчүн байланыштар;
  • Сүрөт форматтары динамикалык жүктөлгөн кодектер тарабынан колдоого алынат;
  • Файлдан, эстутумдан же өзүңүздүн маалымат булагыңыздан сүрөттөрдү окуу (жана жазуу);
  • Сүрөттүн түрүн файлдын кеңейтүүсү же боюнча аныктоо сыйкырдуу сан;
  • Учурда колдоого алынган форматтар: png (окуу, Windows гана), JPEG (окуу, жазуу) PNG (окуу, жазуу).
    Жаңы форматтарды кошуу боюнча иштер жүрүп жатат. KSquirrel-libs тигил же бул жол менен 60ка жакын форматтарды колдогон, эң популярдуу форматтар биринчи кезекте;

  • Окуу операциялары ар дайым RGB жана RGBA форматындагы пикселдерди чыгара алат;
  • Кээ бир кодектер форматтардын андан да чоң тизмесинде пикселдерди чыгара алат;
  • Көпчүлүк кодектер SOURCE пикселдерин чыгара алат. Бул, мисалы, CMYK же YCCK сүрөттөрүнөн толук маалымат алууну каалагандар үчүн пайдалуу;
  • ICC профилдерин окуу жана жазуу;
  • C, Qt, SDL тилдериндеги мисалдар;
  • Колдоого алынган платформалар:
    Windows (орноткуч), macOS (brew) жана Linux (Debian).

SAIL эмнелерди бербейт:

  • Сүрөттү түзөтүү;
  • Негизги кодектер (libjpeg ж.б.) тарабынан берилгендерден башка түс мейкиндигин өзгөртүү функциялары;
  • Түстөрдү башкаруу функциялары (ICC профилдерин колдонуу ж.б.)

C тилинде декоддоонун эң жөнөкөй мисалы:

struct sail_context *контекст;

SAIL_TRY(sail_init(&контекст));

struct sail_image *сүрөт;
unsigned char *image_pixels;

SAIL_TRY(саil_read(жол,
контекст,
&сүрөт,
(жараксыз **)&сүрөт_пикселдери));

/*
* Бул жерде алынган пикселдерди иштетүү.
* Бул үчүн, сүрөт->туурасы, сүрөт->бийиктик, сүрөт->сапка_байт, колдонуңуз.
* жана сүрөт->пиксел_формат.
*/

/* Тазалоо */
бекер(сүрөт_пикселдери);
sail_destroy_image(сүрөт);

API деңгээлдеринин кыскача баяндамасы:

  • Newbie: "Мен жөн гана бул JPEG жүктөп алгым келет"
  • Өркүндөтүлгөн: "Мен бул анимацияланган GIFти эстутумдан жүктөгүм келет"
  • Терең деңизчи: "Мен бул анимацияланган GIFти эстутумдан жүктөм жана мен тандаган кодектерди жана пикселди толук көзөмөлдөгүм келет."
  • Техникалык суучул: "Мен жогорудагы нерселердин бардыгын жана өзүмдүн маалымат булагымды каалайм"

Ошол эле аймактан түз атаандаштар:

  • FreeImage
  • DevIL
  • SDL_Image
  • Сасык тумоо боюнча
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

Башка китепканалардан айырмачылыктары:

  • Күтүлгөн объектилер менен адам API - сүрөттөр, палитралар ж.б.
  • Көпчүлүк кодектер RGB/RGBA пикселдеринен көптү чыгара алат.
  • Көпчүлүк кодектер оригиналдуу пикселдерди RGBге өзгөртпөстөн чыгара алышат.
  • Сиз кодектерди каалаган тилде жаза аласыз, ошондой эле аларды бүтүндөй долбоорду кайра компиляция кылбастан кошуп/жок кыла аласыз.
  • Түпнуска сүрөт тууралуу маалыматты сактаңыз.
  • "Зонддоо" - бул пикселдик маалыматтарды декоддоосуз элестүү жөнүндө маалымат алуу процесси.
  • Өлчөмү жана ылдамдыгы.

Source: opennet.ru

Комментарий кошуу