2016-11-29 3 views
2

이미지 필터링을 수행 할 때 CIImageCIFilter을 사용하고 있습니다. 그 후에 이미지 데이터를 UIImageJPEGRepresentation으로 가져 오려고하는데 NULL 데이터가 나타납니다.CIImage에서 이미지 데이터를 가져올 수 없습니다.

CIImage *beginImage = [[CIImage alloc] initWithImage:sourceImage]; 

CIContext *context = [CIContext contextWithOptions:nil]; 

CIFilter *filter = [CIFilter filterWithName:effect keysAndValues:kCIInputImageKey, beginImage, nil]; 

CIImage *outputImage = [filter outputImage]; 

CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; 

UIImage *filteredImage = [UIImage imageWithCIImage:outputImage]; 
CGImageRelease(cgimg); 

NSData *imageData = UIImageJPEGRepresentation(filteredImage, 1.0); 

imageData를 콘솔에 연결할 때 null 데이터가 나타납니다. 위의 코드를 확인하고 내가 잘못하고있는 위치를 알려주십시오.

+0

도움이 될 것입니다 희망 UIImage 쓰기를 작성하는 동안 당신은 CGImageRef를 전달하는 데 필요한 효과의 가치는 무엇입니까? 이 줄에서 CIFilter * filter = [CIFilter filterWithName : 효과 키 앤드 값 : kCIInputImageKey, beginImage, nil]; –

답변

1

// 우리의 희미한 이미지를 만들어보십시오.

CIContext *context = [CIContext contextWithOptions:nil]; 
CIImage *inputImage = [CIImage imageWithCGImage:theImage.CGImage]; //theImage pass your image 
CIFilter *filter1 = [CIFilter filterWithName:@"CIGaussianBlur"]; 
[filter1 setValue:inputImage forKey:kCIInputImageKey]; 
CIImage *result = [filter1 valueForKey:kCIOutputImageKey]; 
CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]]; 
UIImage *returnImage = [UIImage imageWithCGImage:cgImage]; // returnImage is your blur image 
CGImageRelease(cgImage); 
2

귀하의 문제는 여기에 당신은

UIImage *filteredImage = [UIImage imageWithCIImage:outputImage]; 

CIImage을 전달하는 그러나이

UIImage *filteredImage = [[UIImage alloc] initWithCGImage:cgimg]; 

내가 당신에게

+0

답변 해 주셔서 감사합니다. 그것은 효과가 있었다. –

+0

잘 오셨습니다. –

관련 문제