CapturePhotoOutput class
A capture output for still image, Live Photo, and other photography workflows.
CapturePhotoOutput provides an interface for capture workflows related to still photography. In addition to basic capture of still images, a photo output supports RAW-format capture, bracketed capture of multiple images, Live Photos, and wide-gamut color. You can output captured photos in a variety of formats and codecs, including RAW format DNG files, HEVC format HEIF files, and JPEG files.
To capture photos with the CapturePhotoOutput class, follow these steps:
-
Create an CapturePhotoOutput object. Use its properties to determine supported capture settings and to enable certain features (for example, whether to capture Live Photos).
-
Create and configure an CapturePhotoSettings object to choose features and settings for a specific capture (for example, whether to enable image stabilization or flash).
-
Capture an image by passing your photo settings object to the capturePhotoWithSettings method along with a delegate object implementing the CapturePhotoCaptureDelegate class. The photo capture output then calls your delegate to notify you of significant events during the capture process.
Some photo capture settings, such as the flashMode property, include options
for automatic behavior. For such settings, the photo output determines
whether to use that feature at the moment of capture—you don’t know when
requesting a capture whether the feature will be enabled when the capture
completes. When the photo capture output calls your
CapturePhotoCaptureDelegate callbacks with information about the completed
or in-progress capture, it also provides an CaptureResolvedPhotoSettings
object that details which automatic features are set for that capture. The
resolved settings object’s uniqueID property matches the uniqueID value of
the CapturePhotoSettings object you used to request capture.
Enabling certain photo features (Live Photo capture and high resolution
capture) requires a reconfiguration of the capture render pipeline. To opt
into these features, set the setHighResolutionCaptureEnabled
,
setLivePhotoCaptureEnabled
, and setLivePhotoAutoTrimmingEnabled
properties before calling your CaptureSession.startRunning method.
Changing any of these properties while the session is running disrupts the
capture render pipeline: Live Photo captures in progress end immediately,
unfulfilled photo requests abort, and video preview temporarily freezes.
Using a photo capture output adds other requirements to your CaptureSession object:
A capture session can’t support both Live Photo capture and movie file
output. If your capture session includes an CaptureMovieFileOutput object,
the setLivePhotoCaptureSupported
value becomes false. (As an alternative,
you can use the CaptureVideoDataOutput
class to output video buffers at
the same resolution as a simultaneous Live Photo capture).
A capture session can’t contain both an CapturePhotoOutput object and an
CaptureStillImageOutput
object. The CapturePhotoOutput class includes
all functionality of (and deprecates) the CaptureStillImageOutput
class.
The CapturePhotoOutput class implicitly supports wide-gamut color
photography. If the source CaptureDevice.activeColorSpace
value is
AVCaptureColorSpace_P3_D65
, the capture output produces photos with wide
color information (unless your CapturePhotoSettings object specifies an
output format that doesn’t support wide color).
- Inheritance
-
- Object
- CaptureOutput
- CapturePhotoOutput
- Annotations
-
- @Reference('av_foundation/av_foundation/CapturePhotoOutput')
Constructors
- CapturePhotoOutput()
- Constructs a CapturePhotoOutput.
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
capturePhotoWithSettings(
CapturePhotoSettings settings, CapturePhotoCaptureDelegate delegate) → Future< void> - Initiates a photo capture using the specified settings.
-
connectionWithMediaType(
String mediaType) → Future< CaptureConnection?> -
Returns the first connection in the connections array with an input port of a specified media type.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
supportedFlashModes(
) → Future< List< int> > - The flash settings this capture output currently supports.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited