FLTK 용 이미지 처리 라이브러리인 fl_imgtk 의 새로운 업데이트를 GitHub 에 갱신 하였습니다. 별거 아닐 수 있긴 하지만, 뭔가 WPF 따위 안쓰고, QT 보다 매우 가볍고, 그렇다고 GTK+ 같은걸 도 안써도 되는 여러 조건에서 저에게 가장 적합한 것은 FLTK 뿐 이더군요. 하지만 너무 가볍게 만든 GUI 엔진이다 보니 그래픽 처리 부분은 거의 없다 싶이 하여, 만들게 된 것이 바로 fl_imgtk 입니다.
M$VC 쓰는 분들이 FLTK 를 쓰는 경우가 거의 없다는 가정 하에, (사실 FLTK 를 쓰는 가장 큰 이유는 동일 소스로 Windows, Linux, Mac 에서 동일한 프로그램을 만들기 위한 목적) Windows 의 경우는 MinGW-W64 로 빌드 할 경우 가장 효과적인 성능을 냅니다.
특히 OpenMP 를 내부적으로 사용하게 만들어 져 있고, 코드상 독립된 thread 내에서 구동시 메모리 문제가 발생 하지 않도록 만들어 졌기 때문에 아래 tech demo 를 돌려 보시면 OpenMP 로 인한 화면 출력 이상 등은 발생 하지 않는걸 확인 하실 수 있습니다.
최신 버젼인 2017-03-29-0 의 추가되어 현재 사용 가능한 기능들은 아래와 같습니다.
- 이미지 상하,좌우 반전
- 이미지 회전 ( 0~359 도 )
- 감마, 밝기, 채도 조정
- 크기 변경 ( 여러 필터 제공, bilinear, bicubic, lanczos, b-spline )
- Fl_Widget 을 Fl_RGB_Image 로 만듬
- Fl_Widget 을 blur 된 Fl_RGB_Image 로 만듬
- Fl_RGB_Image 를 blur 된 Fl_RGB_Image 로 만듬
- Kernel matrix filter 적용
- HDRi (tone mapping) 지원 ( Drago, Reinhard )
- Fl_RGB_Image 를 새로운 Fl_RGB_Image 로 crop
- 두개의 Fl_RGB_Image 를 하나의 Fl_RGB_Image 로 합침.
- Alpha transparency (투명도) 관련 기능 추가.
- 하나의 Fl_RGB_Image 를 배경으로 여러 Fl_RGB_Image 를 위에 투명도를 적용하여 그림.
이 정도면 제가 사진을 편집 하는 프로그램에서 하는 기능의 대부분을 구현 한 것으로 보입니다. 여기에 이제 White balance 를 조정할 수 있는 기능을 만들고 ( R/G/B channel mixing ), 기존에 만든 Tone mapping 을 이용한 노출 조절을 함께 사용 하면 단순히 사진 편집 하는 프로그램도 새로 만드는데 걸리는 시간은 아마 GUI 뿐일 듯 하기도 합니다.
시간이 나는데로 fl_imgtk 는 계속 기능을 추가 할 예정이며, FTLK 를 쓰시는 분들이 계시다면 좋은 그래픽 툴이 되길 바랍니다.
Tech demo 다운로드
Tech demo 에 사용된 사진에 대해
test.jpg from
allure , from google image search.
sherlock_tab_folder.png from
http://engelyna.deviantart.com/art/Sherlock-The-abominable-bride-folder-icon-tv-serie-581870245