일부 CoreImage 필터를 사용하여 이미지를 처리하고 있습니다. 입력 된 이미지에 필터를 적용하면 CIImage 유형의 filterOutputImage라는 출력 이미지가 생성됩니다.CIImage에서 UIImage 만들기
는 지금 그 이미지를 표시 할, 그리고 일을 시도 :
self.modifiedPhoto = [UIImage imageWithCIImage:filterOutputImage];
self.photoImageView.image = self.modifiedPhoto;
뷰 그러나 비어 - 아무것도 표시되지되고있다.
filterOutputImage 및 self.modifiedPhoto에 대한 세부 정보를 출력하는 logging 문을 추가하면 해당 로깅 문에 두 개의 var에 합법적 인 이미지 데이터가 포함되어있는 것으로 표시됩니다. 크기가보고되고 개체가 nil이 아닙니다.
그래서 Google 검색을 수행 한 후 CGImage 단계를 거쳐야하는 해결책을 발견했습니다. vis :
CGImageRef outputImageRef = [context createCGImage:filterOutputImage fromRect:[filterOutputImage extent]];
self.modifiedPhoto = [UIImage imageWithCGImage:outputImageRef scale:self.originalPhoto.scale orientation:self.originalPhoto.imageOrientation];
self.photoImageView.image = self.modifiedPhoto;
CGImageRelease(outputImageRef);
이 두 번째 방법은 다음과 같습니다. 올바른 이미지가 뷰에 표시됩니다.
누군가 내 첫 시도가 실패한 이유를 설명해 줄 수 있습니까? 존재하지만 보이지 않을 수있는 이미지를 생성하는 imageWithCIImage 메서드로 잘못된 것은 무엇입니까? CIImage에서 UIImage를 생성하려면 항상 CGImage 스테이지를 "통과"해야합니까?
희망 누군가가 내가 self.photoImageView
가있는 UIImageView라고 가정 내 혼란 :
H.
아! 고맙습니다. 예, photoImageView는 UIImageView입니다. UIImage의 CGImage 속성을 사용했는지 전혀 알지 못했습니다. – Hamster
UIImageView에서 이미지를 표시하는 방법에 대해 설명하는 문서가 하나 더 있습니다. 나는 당신이 그것을 배웠던 곳을 찾으려고 노력하고있다. – Hamster
사실, 이제 내가 바이너리 코드를 실제로 보았 기 때문에 : UIImageView가 -drawRect를 오버라이드한다 : 자체 CALayer에서 setContents :를 호출하는 것이 아니다. 궁극적으로 UIImage 드로잉 메서드를 호출하는 것처럼 보입니다. CGImageRef를 가져 와서 그립니다. 그래서, 같은 결과지만, 내 세부 사항이 잘못되었습니다. – iccir