Type Method


A filter which allows the processing of RAW images


+ (CIFilter *)filterWithImageURL:(NSURL *)url options:(NSDictionary<CIRAWFilterOption, id> *)options;



The location of a RAW image file.


An options dictionary. You can pass any of the keys defined in RAW Image Options.

Return Value

A CIFilter object.


The first step when working with RAW images in Core Image is to process the image using either filterWithImageData:options: or filterWithImageURL:options:. These initializers create a CIFilter object with an outputImage which is a CIImage representation of the supplied RAW image.

The newly created filter object allows you fine control over the image processing that isn't available when working with processed images such a JPEG. The following listing shows how to create a Core Image filter based on a URL named imageURL. The image is processed so that its neutral temperature is set to 2,000 Kelvin (giving a blue tint) and its baseline exposure doubled. Finally, a Core Image vignette filter is applied to the processed image in the same way it would be with any other source image:

Listing 1

Processing a RAW image.

let rawFilter = CIFilter(imageURL: imageURL, options: nil)
                    forKey: kCIInputNeutralTemperatureKey)
if let baselineExposure = rawFilter?.value(forKey: kCIInputBaselineExposureKey) as? NSNumber {    
    rawFilter?.setValue(baselineExposure.doubleValue * 2.5,                        forKey: kCIInputBaselineExposureKey)
let vignettedImage = rawFilter?.outputImage?.applyingFilter(    
    withInputParameters: [kCIInputIntensityKey: 5])
if let outputImage = vignettedImage {    
    imageView.image = UIImage(ciImage: outputImage)

See Also

Creating a Filter from a RAW Image

+ filterWithImageData:options:

A filter which allows the processing of RAW images

+ filterWithCVPixelBuffer:properties:options:

Creates a filter from a Core Video pixel buffer.