2016-06-08 3 views

답변

2

Quartz 2D 프레임 워크의 마스킹 기능을 사용하여이를 수행 할 수 있습니다. UI Kit의 상위 레벨 이미지 기능을 사용하는 것보다 조금 복잡하지만 Quartz 2D는 멋진 그래픽 기술을 수행 할 수있는 많은 능력을 제공합니다. 이것에

관련 애플 개발자 가이드는 여기에서 찾을 수 있습니다 :이 예를 들어 https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html

, 당신은 모양 이미지의 내부 부분에 대한 마스크 모양을 만들 것입니다. 당신이 이것을 할 수있는 두 가지 방법이 있습니다. 한 가지 방법은 이미지 편집 소프트웨어를 사용하여 모양 이미지와 크기가 같은 두 번째 마스크 이미지를 만들고 사람 이미지를 표시 할 영역에 검은 색을 표시하고 표시하지 않으려는 곳에 흰색을 사용하는 것입니다. 이 예에서는 파란색 모양 안의 영역이됩니다. 이 이미지를 자르지 않는 것이 중요합니다. 그렇지 않으면 정확하게 일치하지 않게됩니다.

마스킹 이미지를 만드는 또 다른 방법은 모양 이미지를 기반으로 동적으로 수행하는 것입니다. 솔직히 이것이 내가하는 방법입니다. 이는 앱에 이미지 수가 적어지고 모양 이미지를 변경 한 경우 마스크 이미지를 다시 만들 필요가 없음을 의미합니다. 모양 이미지의 서식을 약간 변경하여이 작업을 수행 할 수 있습니다. JPEG 이미지에서 흰색 인 모양 외부의 이미지 부분에 알파 투명도가 있도록 투명도 (png가 선호 됨)를 허용하는 형식을 사용해야합니다. 이미지의 가운데 부분이 흰색인지 확인하십시오 (실제로는 모양 이미지의 원하는 부분에서 사용되지 않는 색상이 효과적 일 수 있지만이 예에서는 흰색으로 표시됩니다). 그리고 부품이 없습니다. 이미지 압축 후 순수한 흰색이 아닙니다.

그런 다음 Quartz를 사용하여 흰색 영역을 선택하고 마스크를 만듭니다. 이 기법은 좀 더 복잡하지만 필요한 것은 위에서 링크 된 문서에서 찾을 수 있습니다. 이 때문에 정적 마스킹 이미지로 시작한 다음 첫 번째 기술이 작동하도록 코드를 얻은 후에는 더 복잡한 기술로 변환 할 수 있습니다. 당신이 당신의 마스크 이미지가있을 때

, 당신은 함수 CGImageMaskCreate (와 마스크 자체를 만들 것입니다 : : : : : : 을 : :)을. 그런 다음 CGImageCreateWithMask (: :) 함수를 사용하여 사람들 이미지에 마스크를 적용 할 수 있습니다.이 이미지는 사람의 인물 사진을 보여 주며 가운데에서 올바른 모양을 잘라냅니다.

마지막으로, 마스크 된 사람들 이미지를 모양 이미지 위에 배치하여 앱에이 이미지를 표시하면 원하는 것을 얻을 수 있습니다.

또한 Quartz 2D 프레임 워크를 사용할 때 이미지가 더 이상 필요하지 않을 때 이미지를 릴리스해야합니다. 그렇지 않으면 메모리 누수가 발생할 수 있습니다.

+0

감사합니다. 단서가 있습니다. – Sovannarith