CIFilter-uitvoerbreedte en -hoogte is nul

Ik probeer een afbeelding te filteren die ik van de imagePicker heb gekregen. De originele afbeelding slaat absoluut prima op met mijn code, maar wanneer ik deze probeer te filteren met CIFilter, is het resulterende UII-bestand "filteredImage" 0x0 pixels groot.

Ik plaats hier de complete functie, het is de afbeeldingsmethode voor afbeeldingspickers.

UPDATE: Filter "CISepiaTone" works and gives me an image with correct dimensions. But CIColorMonochrome is available on iOS too, I checked by asking CIFilter for available filter options.

UPDATE 2: Found it - the inputColor Parameter has to be of type CIColor not UIColor, I overlooked that in the reference.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

   //Filter the image
    CIImage *filterImage = [[CIImage alloc] initWithCGImage:image.CGImage];
    CIFilter *colorMono = [CIFilter filterWithName:@"CIColorMonochrome"];
    [colorMono setDefaults];
    [colorMono setValue:filterImage forKey:@"inputImage"];
    [colorMono setValue:[UIColor yellowColor] forKey:@"inputColor"];

    CIImage *outputImage = [colorMono outputImage];
    CIContext *con = [CIContext contextWithOptions:nil];
    CGImageRef filteredImageRef = [con createCGImage:outputImage fromRect:[outputImage extent]];
    UIImage *filteredImage = [UIImage imageWithCGImage:filteredImageRef scale:1.0f orientation:UIImageOrientationUp];
   //filteredImage dimensions are 0x0 px here!

    CGImageRelease(filteredImageRef);

   //Save image in imageStore
    CFUUIDRef uniqueId = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef uniqueIdStringRef =  CFUUIDCreateString(kCFAllocatorDefault, uniqueId);

    NSString *key = (__bridge NSString *)uniqueIdStringRef;
    [[FPImageStore sharedStore] setImage:filteredImage forKey:key];
    imageKey = key;

    CFRelease(uniqueId);
    CFRelease(uniqueIdStringRef);

   //Dismiss imagePicker viewController
    [self dismissViewControllerAnimated:YES completion:nil];    
}
0

1 antwoord

De inputColor-parameter moet van het type CIColor niet UIColor zijn, ik heb dat over het hoofd gezien in de referentie.

0
toegevoegd