Framework

Core Image

Use built-in or custom filters to process still and video images.

Overview

Core Image is an image processing and analysis technology that provides high-performance processing for still and video images. Use the many built-in image filters to process images, and build complex effects by chaining filters. For details, see Core Image Filter Reference.

You can also create new effects with custom filters and image processors; see Core Image Programming Guide. In macOS, you can package those custom filters as Image Units and publish them for use by others; see Image Unit Tutorial.

Topics

First Steps

class CIImage

A representation of an image to be processed or produced by Core Image filters.

class CIFilter

An image processor that produces an image by manipulating one or more input images or by generating new image data.

class CIContext

An evaluation context for rendering image processing results and performing image analysis.

Basic Data Types

Colors, vectors, and other types used in applying or creating image filters.

Custom Filters

Use the Core Image Kernel Language to create universal image processing routines that work in any Core Image context.

class CIKernel

A GPU-based image processing routine used to create custom Core Image filters.

class CIColorKernel

A GPU-based image processing routine that processes only the color information in images, used to create custom Core Image filters.

class CIWarpKernel

A GPU-based image processing routine that processes only the geometry information in an image, used to create custom Core Image filters.

class CISampler

An object that retrieves pixel samples for processing by a filter kernel.

Custom Image Processors

Access image content directly to use other image processing technologies within a Core Image workflow.

class CIImageProcessorKernel

The abstract class you extend to create custom image processors that can integrate with Core Image workflows.

protocol CIImageProcessorInput

A container of image data and information for use in a custom image processor.

protocol CIImageProcessorOutput

A container for writing image data and information produced by a custom image processor.

Feedback-Based Processing

class CIImageAccumulator

An object that manages feedback-based image processing for tasks such as painting or fluid simulation.

Image Units

In macOS, create and package custom filters as image units that other apps can load as plug-ins, or discover and load image units published by third-party apps.

class CIPlugIn

The mechanism for loading image units—bundles containing custom Core Image filters—in macOS.

class CIFilterGenerator

An object that creates and configures chains of individual image filters.

protocol CIPlugInRegistration

The interface for loading Core Image image units.

protocol CIFilterConstructor

A general interface for objects that produce CIFilter instances.

Barcode Descriptions

Model barcode data to create barcode images with Core Image filters or to interpret barcodes detected by Core Image, Vision, or AVFoundation features.

Image Feature Detection

In macOS 10.13, iOS 11, and tvOS 11 or later, the Vision framework replaces these classes for identifying and analyzing image features.

class CIDetector

An image processor that identifies notable features (such as faces and barcodes) in a still image or video.

class CIFeature

The abstract superclass for objects representing notable features detected in an image.

class CIFaceFeature

Information about a face detected in a still or video image.

class CIRectangleFeature

Information about a rectangular region detected in a still or video image.

class CITextFeature

Information about a region likely to contain text detected in a still or video image.

class CIQRCodeFeature

Information about a Quick Response code (a kind of 2D barcode) detected in a still or video image.

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software