Невозможно получить данные изображения из CIImage

Я использую CIImage а также CIFilter делать фильтрацию изображений. После этого я пытаюсь получить данные изображения по UIImageJPEGRepresentation, но я получаю нулевые данные.

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. Пожалуйста, проверьте мой код выше, и дайте мне знать, где я делаю неправильно.

2 ответа

Ваша проблема здесь вы проходите CIImage

UIImage *filteredImage = [UIImage imageWithCIImage:outputImage];

Но вам нужно пройти CGImageRef при создании UIImage напиши это

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

Я надеюсь, что это поможет вам

// создаем наше размытое изображение, попробуйте эту надежду для вас.

 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);
Другие вопросы по тегам