SAIL ์ด๋ฏธ์ง ๋์ฝ๋ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋ช ๊ฐ์ง ์ฃผ์ ์ ๋ฐ์ดํธ๊ฐ ๊ฒ์๋์ด ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ KSquirrel ์ด๋ฏธ์ง ๋ทฐ์ด์ ์ฝ๋ฑ์ C๋ก ๋ค์ ์์ฑํ์ง๋ง ๋์ ์์ค์ ์ถ์ API์ ๋ค์ํ ๊ฐ์ ์ฌํญ์ ์ ๊ณตํ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์์ง๋ง ๊ณ์ํด์ ๊ฐ์ ๋๊ณ ์์ต๋๋ค. ๋ฐ์ด๋๋ฆฌ ๋ฐ API ํธํ์ฑ์ ์์ง ๋ณด์ฅ๋์ง ์์ต๋๋ค. ๋ฐ๋ชจ.
SAIL์ ํน์ง
- ๋น ๋ฅด๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ;
- C++11์ ๋ฐ์ธ๋ฉํ์ฌ C17๋ก ์์ฑ๋์์ต๋๋ค.
- ์ด๋ฏธ์ง ํ์์ ๋ํ ์ง์์ ๋์ ์ผ๋ก ๋ก๋๋ ์ฝ๋ฑ์ ์ํด ๊ตฌํ๋๋ฉฐ ํด๋ผ์ด์ธํธ ์ธก๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ๊ฑฐ ๋ฐ ์ถ๊ฐ๋ ์ ์์ต๋๋ค.
- ํ์ผ, ๋ฉ๋ชจ๋ฆฌ, ์์ฒด ์์ค์์ ์ฝ๊ธฐ
- ๋ค์ค ํ์ด์ง ๋ฐ ์ ๋๋ฉ์ด์ ์ด๋ฏธ์ง ์ง์
- ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์์ ๋ํ ์ง์์ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ libjpeg, libpng ๋ฑ์ ์ฌ์ฉํ์ฌ ๊ณ์ ์ํ๋ฉ๋๋ค.
- ํฌ๋ก์ค ํ๋ซํผ: Linux, Windows, macOS;
- "ํ๋ก๋น" - ํฝ์ ์ ๋์ฝ๋ฉํ์ง ์๊ณ ์ด๋ฏธ์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ต๋๋ค.
- ์ธ๊ฐ ๊ฐ์ฒด ์ด๋ฆ(FIMULTIBITMAP ์์)
- ICC ํ๋กํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ
- RGBA ๋๋ BGRA ํฝ์ ์ ๋ณด๋ ๋๋ค.
- ์ฝ๋ฑ์์ ์ง์ํ๋ ๊ฒฝ์ฐ ์๋ณธ ํฝ์ (์: CMYK)์ ๋ฐํํฉ๋๋ค.
๋ง์ง๋ง ์ถํ ์ดํ ๋ณ๊ฒฝ ์ฌํญ ๋ชฉ๋ก:
- API๊ฐ ํฌ๊ฒ ๊ฐ์ ๋๊ณ ๋จ์ํ๋์์ต๋๋ค. ์ด์ : structail_context *context; SAIL_TRY(sail_init(&context)); ๊ตฌ์กฐ์ฒด ํญํด_์ด๋ฏธ์ง *์ด๋ฏธ์ง; ๋ถํธ ์๋ ๋ฌธ์ *image_pixels; SAIL_TRY(sail_read(path, context, &image, (void **)&image_pixels)); ... ๋ฌด๋ฃ(์ด๋ฏธ์ง_ํฝ์
); ail_destroy_image(์ด๋ฏธ์ง);
ํ์ฌ: structail_image *image; SAIL_TRY(sail_read_file(๊ฒฝ๋ก, &์ด๋ฏธ์ง); ...ail_destroy_image(์ด๋ฏธ์ง);
- BMP, GIF, TIFF ํ์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- UWP๋ฅผ ์ ์ธํ ๋ชจ๋ ํ๋ซํผ์์ VCPKG์ ๊ฐ์ฉ์ฑ
- ๋ฒค์น๋งํฌ ์ฑ๋ฅ ํ ์คํธ๊ฐ ๊ฒ์๋์์ต๋๋ค.
- C++ ๋ฐ์ธ๋ฉ์ด C++17๋ก ์ด๋๋์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์์ ์ ๊ฒ์ผ๋ก ๊ต์ฒดํ ์ ์๋๋ก ํ ๊ณณ์ ๋ชจ์์ ธ ์์ง๋ง ํ์ฌ๋ ์ฌ์ปดํ์ผ์ ํตํด์๋ง ๊ฐ๋ฅํฉ๋๋ค.
- ์ด์ ์ฌ์ฉ์๋ CMake find_package()๋ฅผ ์ฌ์ฉํ์ฌ SAIL์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
- ์ ์ ์ผ๋ก ์ปดํ์ผํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค(SAIL_STATIC=ON).
- ๋ชจ๋ ์ฝ๋ฑ์ ํ๋์ ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ปดํ์ผํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค(SAIL_COMBINE_CODECS=ON).
- ยตnit ๊ธฐ๋ฐ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ ์์ ์ด ์์๋์์ต๋๋ค.
๊ถ์ฅ ์ค์น ๋ฐฉ๋ฒ
- Linux - vcpkg, Debian ๊ท์น๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ์๋์ฐ - vcpkg
- macOS-์์กฐ
์ถ์ฒ : opennet.ru