이미지를 표시 할 때 모아레 (간섭 줄무늬)를 억제하는 방법

2422 단어 iOSSwiftswift3

개요



iOS 앱에서 UIImageView를 사용하여 이미지를 볼 때 모아레가 발생하는 것을 방지하는 방법을 설명합니다.

모아레란?



모아레 또는 모왈레 (부처 : moiré)는 간섭 줄무늬라고도하며 규칙적인 반복 패턴을 여러 번 겹칠 때 그주기의 편차로 인해 시각적으로 발생하는 줄무늬입니다.
또한, 규칙적인 패턴을 디지털 사진 등의 비트 맵 화상으로 한 경우에도, 화상의 화소 해상도와 패턴의 주파수의 어긋남에 의해 같은 줄무늬가 발생하지만 이것을 모아레라고 부른다.

wikipedia에서 인용

상기의 화상 2개를 봐 비교해 받을 수 있으면 알기 쉬울까 생각합니다만,
왼쪽 이미지가 원래 이미지이고 오른쪽 이미지가 모아레가 발생한 상태의 이미지입니다.

어떤 경우에 발생할 수 있습니까?



모아레가 발생하기 쉬운 상기와 같은 패턴의 화상을 본래의 화상 사이즈보다 작은 사이즈의 UIImageView로 표시로 표시하는 것만으로 용이하게 발생합니다.
(본래의 크기보다 작을수록 발생하기 쉽다)

회피 방법


UIImageViewlayer.minificationFilter 에 kCAFilterTrilinear 를 설정하는 것으로 모아레를 발생시키지 않고 화상 표시가 가능합니다.

샘플
extension UIImageView {
    override open func awakeFromNib() {
        super.awakeFromNib()

        self.layer.minificationFilter = kCAFilterTrilinear
    }
}

문서 : minificationFilter

구성 가능한 축소 필터
  • kCAFilterLinear: 선형 보간
  • kCAFilterNearest: 이웃 보간
  • kCAFilterTrilinear : 트리 리니어 보간

  • 결론


    UIImageView 이나 UIImage 의 설정을 찾아 돌아 결과 CALayer 에서의 설정이었습니다.
    이미지 콘텐츠를 메인으로 취급하는 앱에서는 설정을 검토해 보면 어떻습니까?
    실수 등이 있으면 댓글/편집 요청하실 수 있습니다 도움이됩니다.

    좋은 웹페이지 즐겨찾기