UIImage를 CIImage로 또는 그 변환하는 방법
CIImage
화면에 표시되는 ImageView 에서 가져 오려고합니다.
UIImage *image = myImageView.image;
이미지 UIImage
를 CIImage
.
CIImage *cImage = [....];
어떻게하나요?
CIImage *ciImage = [UIImage imageNamed:@"test.png"].CIImage;
UIImage *uiImage = [[UIImage alloc] initWithCIImage:ciImage];
과 같은 myUIImage.CIImage
반품 사례를 대신 할 수 있습니다. 딜런 핸드nil
[UIImageView image]
[CIImage imageWithCGImage:myUIImage.CGImage]
Swift 버전 :
let ciImage = UIImage(named: "test.png")!.ciImage
let uiImage = UIImage(ciImage: ciImage)
대신 할 수있는 것처럼 myUIImage.ciImage
반품 사례를 수정합니다 .nil
CIImage(cgImage: myUIImage!.cgImage!)
Changxing Wang의 대답은 실제로 작동하지만 Apple은 UIImage.CIImage가 항상 작동하지 않습니다. 특히 PocketCoreImage에서 :
// Create a CIImage from the _inputImage. While UIImage has a property returning
// a CIImage representation of it, there are cases where it will not work. This is the
// most compatible route.
_filteredImage = [[CIImage alloc] initWithCGImage:_inputImage.CGImage options:nil];
Apple은 또한 다음을 사용하지만 나에게 적합하지 않습니다.
[UIImage imageWithCIImage:_filteredImage]
이 게시물 에서 채택한 내 개인적인 구현 은 나를 위해 작동합니다.
// result is a CIImage, output of my filtering.
// returnImage is (obviously) a UIImage that I'm going to return.
CIContext *context = [CIContext contextWithOptions:nil];
UIImage *returnImage =
[UIImage imageWithCGImage:[context createCGImage:result fromRect:result.extent]];
이것은 가장 좋은 방법입니다.
UIImage* u =[UIImage imageNamed:@"image.png"];
CIImage* ciimage = [[CIImage alloc] initWithCGImage:u.CGImage];
이제 ciimage 사용 ...
및 Swift 버전 :
let i1 = UIImage(named: "testImage")
if let cgi1 = i1?.cgImage {
let ci = CIImage(cgImage: cgi1)
//use ci
}
(만약 문에서 오타 수정을한다면)
다음은 프로젝트에서 전체 코드 샘플입니다.
- (UIImage *)makeUIImageFromCIImage:(CIImage *)ciImage {
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:ciImage fromRect:[ciImage extent]];
UIImage* uiImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return uiImage;
}
CIImage
기본적으로 이미지에 대한 레시피입니다. 에서 CIImage
로 직접 CHAPTER 2하려고하면 문제가 발생합니다 UIImage
. 예를 들어
NSData * UIImageJPEGRepresentation (
UIImage *image,
CGFloat compressionQuality
);
반환 nil
합니다.
func toCIImage(image: UIImage) -> CIImage {
return image.CIImage ?? CIImage(CGImage: image.CGImage!)
}
func toUIImage(image: CIImage) -> UIImage {
return UIImage(CIImage: image)
}
changx 의 대답에 대한 접근 예 :
guard let ciimage = CIImage(image: uiimage) else { return }
let image = UIImage(CIImage: ciimage)
스위프트 3/4
UIImage> CIImage
let ciimage = CIImage(image: image)
https://developer.apple.com/documentation/uikit/uiimage/1624090-init
CIImage> UIImage
let image = UIImage(ciImage: ciimage)
https://developer.apple.com/documentation/coreimage/ciimage/1624119-init
UIImage를 CIImage로 변환 할 때 거의 nil이고 일치하는 두 가지 경우가 있습니다. 아래 코드는 그것을 해결했습니다.
CIImage *ciImage;
ciImage=[[CIImage alloc] initWithImage:imageToConvert];
if (ciImage==nil)
ciImage=imageToConvert.CIImage;
참고 URL : https://stackoverflow.com/questions/8425647/how-to-convert-uiimage-to-ciimage-and-vice-versa
'ProgramingTip' 카테고리의 다른 글
Oracle SQL Developer- 그리드가 누락 된 쿼리 결과 창 (0) | 2020.11.22 |
---|---|
객체가 Java의 클래스에 존재하는지 확인 (0) | 2020.11.22 |
C ++에서 std :: 벡터 확인 (0) | 2020.11.22 |
iOS에서 사용자 지정 UIActivity를 생성해야합니까? (0) | 2020.11.22 |
pyspark 데이터 프레임에 고유 한 열 값 표시 : python (0) | 2020.11.22 |