์ด๋ฏธ์ง€ ๋””์ฝ”๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ SAIL 0.9.0-pre12 ์ถœ์‹œ

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€