2016-11-29 185 views
2

我正在使用CIImageCIFilter進行圖像過濾。之後,我試圖通過UIImageJPEGRepresentation獲取圖像數據,但是我收到空數據。無法從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。請檢查我的上述代碼,並讓我知道我做錯了什麼。

+0

什麼效果的價值是什麼?在這一行CIFilter * filter = [CIFilter filterWithName:effect keysAndValues: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

你的問題是在這裏你逝去的CIImage

UIImage *filteredImage = [UIImage imageWithCIImage:outputImage]; 

但是你需要通過CGImageRef同時創造UIImage寫這個

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

我希望它會幫助你

+0

感謝您的回答。有效。 –

+0

你很好 –