본문 바로가기

Developement/C/C++

FLTK 용 이미지 처리 라이브러리, fl_imgtk 업데이트.


 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 다운로드

fl_imgtk_tdemo_20170329-0.7z

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