ΠΠ±ΡΠ°Π²Π΅Π½ΠΈ ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π·Π½Π°ΡΠ°ΡΠ½ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ»ΠΈΠΊΠΈ SAIL, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ C ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΠΎΠ΄ ΠΎΠ΄Π°ΠΌΠ½Π° Π½Π΅ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΠΎΡ ΠΏΡΠ΅Π³Π»Π΅Π΄ΡΠ²Π°Ρ Π½Π° ΡΠ»ΠΈΠΊΠΈ KSquirrel, Π½ΠΎ ΡΠΎ Π°ΠΏΡΡΡΠ°ΠΊΡΠ΅Π½ API Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΈ Π±ΡΠΎΡΠ½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ°. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, Π½ΠΎ ΡΓ¨ ΡΡΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ°Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°. ΠΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ° ΡΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΠΈ API ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ Π΅ Π·Π°Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½Π°. ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡΠ°.
ΠΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΠΏΠ»ΠΎΠ²ΠΈ
- ΠΡΠ·Π° ΠΈ Π»Π΅ΡΠ½Π° Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°;
- ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ Π²ΠΎ C11 ΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΠ΅ Π·Π° C++17;
- ΠΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° ΡΠ»ΠΈΠΊΠΈ ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ Π²ΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ΄Π΅ΡΠΈ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΠΎΡΡΡΡΠ°Π½Π°Ρ ΠΈ Π΄ΠΎΠ΄Π°Π΄Π°Ρ Π½Π΅Π·Π°Π²ΠΈΡΠ½ΠΎ ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° ΡΡΡΠ°Π½Π°;
- Π§ΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°, ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΈΠ·Π²ΠΎΡΠΈ;
- ΠΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ»ΠΈΠΊΠΈ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΈ Π°Π½ΠΈΠΌΠΈΡΠ°Π½ΠΈ ΡΠ»ΠΈΠΊΠΈ;
- ΠΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° ΠΏΠΎΠΏΡΠ»Π°ΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ ΡΓ¨ ΡΡΡΠ΅ ΡΠ΅ Π²ΡΡΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ libjpeg, libpng, ΠΈΡΠ½.
- ΠΡΠΎΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°: Linux, Windows, macOS;
- βΠ‘ΠΎΠ½Π΄ΠΈΡΠ°ΡΠ΅β - Π΄ΠΎΠ±ΠΈΠ²Π°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠ»ΠΈΠΊΠ° Π±Π΅Π· Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΠΈ;
- ΠΠΌΠΈΡΠ° Π½Π° ΡΠΎΠ²Π΅ΡΠΊΠΈ Π΅Π½ΡΠΈΡΠ΅ΡΠΈ (Π½Π΅ΠΌΠ° FIMULTIBITMAP);
- Π§ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ICC ΠΏΡΠΎΡΠΈΠ»ΠΈ;
- ΠΡΠΏΡΠ°ΡΠ° RGBA ΠΈΠ»ΠΈ BGRA ΠΏΠΈΠΊΡΠ΅Π»ΠΈ;
- ΠΠΈ Π²ΡΠ°ΡΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, CMYK) Π°ΠΊΠΎ Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ΠΎ ΠΎΠ΄ ΠΊΠΎΠ΄Π΅ΠΊΠΎΡ;
Π‘ΠΏΠΈΡΠΎΠΊ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅:
- API Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΠΈ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½. ΠΠ΅ΡΠ΅: struct sail_context *context; SAIL_TRY(sail_init(&context)); struct sail_image *ΡΠ»ΠΈΠΊΠ°; Π½Π΅ΠΏΠΎΡΠΏΠΈΡΠ°Π½ Π·Π½Π°ΠΊ *ΡΠ»ΠΈΠΊΠ°_ΠΏΠΈΠΊΡΠ΅Π»ΠΈ; SAIL_TRY(sail_read (ΠΏΠ°ΡΠ΅ΠΊΠ°, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, &ΡΠ»ΠΈΠΊΠ°, (ΠΏΡΠ°Π·Π½ΠΈΠ½Π° **)&ΡΠ»ΠΈΠΊΠ°_ΠΏΠΈΠΊΡΠ΅Π»ΠΈ)); ...Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ(ΡΠ»ΠΈΠΊΠ°_ΠΏΠΈΠΊΡΠ΅Π»ΠΈ); sail_destroy_image(ΡΠ»ΠΈΠΊΠ°);
Π‘Π΅Π³Π°: struct sail_image *image; SAIL_TRY(sail_read_file(ΠΏΠ°ΡΠ΅ΠΊΠ°, &ΡΠ»ΠΈΠΊΠ°); ... sail_destroy_image(image);
- ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΈ BMP, GIF, TIFF ΡΠΎΡΠΌΠ°ΡΠΈ;
- ΠΠΎΡΡΠ°ΠΏΠ½ΠΎΡΡ Π²ΠΎ VCPKG Π½Π° ΡΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΎΡΠ²Π΅Π½ UWP;
- ΠΠ±ΡΠ°Π²Π΅Π½ΠΈ ΡΠ΅ΠΏΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ;
- C++ Π²ΡΠ·ΡΠ²Π°ΡΠ΅ΡΠΎ Π΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ΠΎ Π²ΠΎ C++17;
- Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π±Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΡΠΎΠ±ΡΠ°Π½ΠΈ Π½Π° Π΅Π΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ°Ρ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠ΅Π½Π°Ρ ΡΠΎ Π²Π°ΡΠΈ, Π½ΠΎ Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΡ ΡΠΎΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠ°ΠΌΠΎ ΡΠΎ ΠΏΡΠ΅ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅;
- ΠΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°Ρ CMake find_package() Π·Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ²ΡΠ·Π°Ρ SAIL;
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π·Π° ΡΡΠ°ΡΠΈΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ (SAIL_STATIC=ON);
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΈΡΠ΅ ΠΊΠΎΠ΄Π΅ΡΠΈ Π²ΠΎ Π΅Π΄Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° (SAIL_COMBINE_CODECS=ON);
- ΠΠ°ΠΏΠΎΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΞΌnit;
ΠΡΠ΅ΠΏΠΎΡΠ°ΡΠ°Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°
- Linux - vcpkg, ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° Debian ΡΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ
- Windows - vcpkg
- macOS - ΠΏΠΈΡΠ°Π»Π°ΠΊ
ΠΠ·Π²ΠΎΡ: opennet.ru