A photo filter application created using RxSwift

Filter-Cam?

RxSwift를 사용하여 만든 사진 필터 어플입니다.

스킬

  • Swift
  • MVC Pattern

라이브러리

  • RxSwift
  • RxCocoa
  • SnapKit
  • CoreImage

기술 블로그

기술 블로그 링크

특징

사진 선택

  • 사진 목록 화면의 PublishSubject는 selectedPhoto 변수 이벤트를 관찰합니다.
  • 메인 화면은 이 변수를 subscribe하여 변수에 선택된 사진이 할당되면, 자신의 화면에 해당 사진를 띄웁니다.

필터 적용

  • 사진에 필터를 적용하는 함수는 이미지를 받아 필터 처리된 사진을 클로저로 반환합니다.
  • 메인 화면은 이 함수가 클로저로 필터 처리된 사진을 반환하는 이벤트를 감지합니다.
  • 이벤트가 발생하면 자신의 화면에 필터 처리된 이미지를 띄웁니다.

화면

사진 목록 불러오기

  • 메인 화면의 추가 버튼을 클릭하면 기기의 사진들을 가져와 컬렉션뷰에 띄웁니다.
  • 사진은 최신 사진부터 보여줍니다.
  • 사진을 클릭하면 다시 메인 화면으로 이동하며, 선택한 사진이 보여집니다.

필터 적용

  • 메인 화면에 선택한 사진이 추가되면 필터를 적용할 수 있습니다.
  • 적용 버튼을 눌러 필터를 적용하면, 필터가 적용된 사진을 확인할 수 있습니다.
  • 적용한 후 다시 취소 버튼을 눌러 이전 상태로 돌릴 수 있습니다.

필터 변경

  • 필터는 하프톤, 세피아톤, 모노톤이 있습니다.
  • 필터 버튼을 클릭하면 필터 종류들을 선택할 수 있습니다.
  • 필터는 모델로 구현되며 필터의 CIKey, 이름(한글), 배경색상값을 가지고 있습니다.
  • 필터가 변경되면 버튼의 UI를 변경합니다.
  • 이전에 필터가 이미 적용이 되어서 취소 버튼이더라도 필터가 변경되면 적용 버튼으로 바뀝니다(사용자가 필터를 적용하고자 필터를 변경하는 목적이 크기에 버튼은 적용 버튼으로 바뀝니다).

GitHub

View Github