---
title: "saveLivePhoto(to:options:completionHandler:)"
framework: photos
role: symbol
role_heading: Instance Method
path: "photos/phlivephotoeditingcontext/savelivephoto(to:options:completionhandler:)"
---

# saveLivePhoto(to:options:completionHandler:)

Processes and saves a full-quality Live Photo as the output of your editing session.

## Declaration

```swift
func saveLivePhoto(to output: PHContentEditingOutput, options: [String : Any]? = nil, completionHandler handler: @escaping @Sendable (Bool, (any Error)?) -> Void)
```

```swift
func saveLivePhoto(to output: PHContentEditingOutput, options: [String : Any]? = nil) async throws
```

## Parameters

- `output`: The photo editing output to receive the rendered Live Photo, created from the same doc://com.apple.photokit/documentation/Photos/PHContentEditingInput object you used to begin this Live Photo editing context.
- `options`: Options that affect Live Photo rendering. See Live Photo Processing Options.
- `handler`: A block that Photos calls on the main queue after rendering is complete. The block takes the following parameters:

## Discussion

Discussion Use this method when you have finished an editing session and need to provide rendered output in a PHContentEditingOutput object. Unlike when rendering output for a photo or video asset, you don’t need to provide rendered output using the renderedContentURL property of the editing output object. Instead, create a PHContentEditingOutput object using the init(contentEditingInput:) initializer, passing the same PHContentEditingInput object you used in the PHLivePhotoFrameProcessingBlock initializer to start this Live Photo editing context. Then pass that editing output object to this method, and Photos renders the Live Photo and provides it to the editing output. note: Don’t forget to describe your edits in a PHAdjustmentData object and provide that to the adjustmentData property of your content editing output. Providing adjustment data allows your app (or photo editing extension) to non-destructively resume working with an edit later, whether on the same device or on another Mac or iOS device using iCloud Photo Library. After this method’s completion handler signals successful rendering, you use the content editing output to complete the edit. In an app using the Photos framework, create a PHAssetChangeRequest object inside a PHPhotoLibrary performChanges block, and set its contentEditingOutput property to your editing output. In a photo editing extension running in the Photos app, your main view controller provides content editing output when requested by the finishContentEditing(completionHandler:) method.

## See Also

### Processing an Editing Context’s Live Photo

- [prepareLivePhotoForPlayback(withTargetSize:options:completionHandler:)](photos/phlivephotoeditingcontext/preparelivephotoforplayback(withtargetsize:options:completionhandler:).md)
- [PHLivePhotoEditingOption](photos/phlivephotoeditingoption.md)
- [cancel()](photos/phlivephotoeditingcontext/cancel().md)
