ááááŹáááşáážáŹá¸ááąáŹ áĄááşááááşááťáŹá¸á á˝áŹááᯠSAIL ááŻááşááŻáśááŻááşááźááˇáşááąáŹáşááźáááˇáş á áŹááźááˇáşáááŻááşáááŻáˇ ááŻááşááźááşáááŻááşááŤáááşá áááşá¸áááş ááŹáááźáŹáážááşáááşáááŻááşá¸ááŹá¸áááˇáş KSquirrel ááŻááşááŻáśááźááˇáşáážáŻáá°ááśááž ááźááşáááşááąá¸ááŹá¸ááŹá¸ááąáŹ C ááŹá¸áážááşá¸ááᯠááąáŹááşááśáˇááąá¸ááąáŹáşáááşá¸ áĄáááˇáşááźááˇáşááŹá¸ááąáŹ abstract API áážááˇáş ááťáŹá¸á á˝áŹááąáŹáááŻá¸áááşáážáŻááťáŹá¸ááźááˇáş ááśáˇáááŻá¸ááąá¸ááŤáááşá á áŹááźááˇáşáááŻááşáááş áĄááŻáśá¸ááźáŻáááş áĄáááşáááˇáşááźá áşááąááźáŽááźá áşááąáŹáşáááşá¸ á ááşáááşáááźááş áááŻá¸áááşáážáŻááᯠááŻááşááąáŹááşááąáá˛ááźá áşáááşá Binary áážááˇáş API áááŻááşáááşáážáŻááᯠáĄáŹáááśááťááşááážáááąá¸ááŤá ááŽáááŻá
SAIL ááĄááşášááŤáááşááťáŹá¸
- á áŹááźááˇáşáááŻááşááᯠááźááşáááşááźáŽá¸ áĄááŻáśá¸ááźáŻááá˝ááşáá°áááşá
- C11 áá˝ááş C++17 ááᯠááťáááşáá˝á˛á ááąá¸ááŹá¸ááŹá¸áááşá
- ááŻááşááŻáśááąáŹáşáááşááťáŹá¸áĄáá˝ááş ááśáˇáááŻá¸áážáŻááᯠááŻááşáááŻááşá¸ááťáŹá¸áááşááŹá¸áááˇáş ááŻááşáá áşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá ááŻááşáá áşááťáŹá¸ááᯠááąáŹááşáááşáááşááž áá˝ááşáááşá á˝áŹ áááˇáşáá˝ááşá¸áááŻááşáááşá
- áááŻááşá áážááşááŹááşá áááŻááşáááŻááşáááşá¸ááźá áşááťáŹá¸ááž á áŹáááşááźááşá¸
- á áŹááťááşáážáŹááąáŤááşá¸ááťáŹá¸á á˝áŹáážááˇáş ááŹáá˝ááşá¸ááŻááşááŻáśááťáŹá¸áĄáá˝ááş ááśáˇáááŻá¸áážáŻá
- áááşáááŻááşáᏠá áŹááźááˇáşáááŻááşááťáŹá¸ libjpegá libpng á áááşáááŻáˇááᯠáĄááŻáśá¸ááźáŻá áá°ááźááŻááşááťáŹá¸ááąáŹ ááąáŹáşáááşááťáŹá¸áĄáá˝ááş ááśáˇáááŻá¸áážáŻ ááážáááąáá˛ááźá áşáááşá
- ĐŃĐžŃŃ-пНаŃŃĐžŃПоннОŃŃŃ: Linux, Windows, macOS;
- Probing áááş pixels ááťáŹá¸ááᯠdecoding áááŻááşáᲠááŻáśáá áşááŻá áĄááťááşáĄáááşááᯠááá°ááźááşá¸ ááŻááşáááşá¸á ááşááźá áşáááşá
- áĄáá˝á˛áˇáĄá ááşá¸ááťáŹá¸á áá°ááŹá¸áĄáááşááťáŹá¸ (FIMULTIBITMAP ááážáááŤ);
- ICC ááááŻáááŻááşááťáŹá¸ááᯠáááşááźááşá¸áážááˇáş ááąá¸ááŹá¸ááźááşá¸á
- RGBA áááŻáˇáááŻááş BGRA áá áşáááşááťáŹá¸áááŻááŻááşááąá¸áááşá
- codec áážááśáˇáááŻá¸ááŹá¸ááťážááşáá°áááşá¸áá áşáááşááťáŹá¸ (áĽááᏠCMYK) áááŻááźááşááąá¸áááşá
ááąáŹááşááŻáśá¸ááŻááşááąááźáŽá¸ááááşá¸á áĄááźáąáŹááşá¸áĄáá˛ááťáŹá¸á áŹáááşá¸-
- API ááᯠááááááŹáᏠááźážááˇáşáááşááźáŽá¸ áááŻá¸áážááşá¸áĄáąáŹááş ááźáŻááŻááşááŹá¸áááşá Was: struct sail_context *context; SAIL_TRY(sail_init(&context)); struct sail_image *image; áááşáážááşááááŻá¸ááŹá¸ááąáŹ char *image_pixels; SAIL_TRY(sail_read(áááşá¸ááźáąáŹááşá¸á áĄááźáąáŹááşá¸áĄááŹá &ááŻáśá (ááťááşááźááş **)&image_pixels)); ... áĄááá˛áˇ(image_pixels); sail_destroy_image(ááŻááşááŻáś);
áááŻ- struct sail_image *image; SAIL_TRY(sail_read_file(áááşá¸ááźáąáŹááşá¸á &image); ... sail_destroy_image(ááŻááşááŻáś);
- BMPá GIFá TIFF ááąáŹáşáááşááťáŹá¸ áááˇáşáá˝ááşá¸ááŹá¸áááşá
- UWP áážáá˝á˛á ááááşááąáŹááşá¸áĄáŹá¸ááŻáśá¸áá˝ááş VCPKG áá˝ááşááážááááŻááşáážáŻá
- á á˝ááşá¸ááąáŹááşáááşá áśáážáŻááşá¸ááťáŹá¸ááᯠááŻááşááźááşááźááşá¸á
- C++ binding ááᯠC++17 áááŻáˇ áá˝ážáąáˇááźáąáŹááşá¸ááŹá¸ááŤáááşá
- áááşáááŻááŽáá˝á˛ááąáážáŻááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáá áşááąááŹáááşá¸áá˝ááş á áŻá ááşá¸ááŹá¸ááąáŹááźáąáŹááˇáş áááşá¸áááŻáˇááᯠáááˇáşáááŻááşáááŻááşááźááˇáş áĄáá˝ááşááá° áĄá áŹá¸áááŻá¸áááŻááşááąáŹáşáááşá¸ áááŻáĄááťáááşáá˝ááş ááźááşáááşá áŻá ááşá¸ááźááşá¸ááźááˇáşáᏠááŻááşááąáŹááşáááŻááşáááşááźá áşáááşá
- áĄááŻáśá¸ááźáŻáá°ááťáŹá¸áááş SAIL ááŤáááşáááş CMake find_package() ááᯠáááŻáĄááŻáśá¸ááźáŻáááŻááşááŤááźáŽá
- áááşááąáŹááşá¸ static compilation á á˝ááşá¸áááş (SAIL_STATIC=ON);
- ááŻáśáá áşááťá áşáááŻááşáá áşááŻáá˛áááŻáˇ ááŻááşáá áşááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠá áŻá ááşá¸áááş á á˝ááşá¸áááşááᯠááąáŤááşá¸áááˇáşáá˛áˇáááş (SAIL_COMBINE_CODECS=ON);
- Âľnit ááᯠáĄááźáąááśá á áŹááąá¸áá˝á˛ááťáŹá¸ ááąáŤááşá¸áááˇáşááźááşá¸áĄáá˝ááş áĄááŻááşá áááşáá˛áˇááŤáááşá
áááşáááşáááşá¸ááᯠáĄááźáśááźáŻááŹá¸áááşá
- Linux â vcpkg, ŃакМо Đ´ĐžŃŃŃĐżĐ˝Ń Debian á ááşá¸ááťááşá¸á ááşá¸áááşá¸áá˝áąáááŻ
- Windows â vcpkg
- macOS â brew
source: opennet.ru
