MediaEditor 1.2.1

MediaEditor 1.2.1

Maintained by Enej Bajgoric, Antonis Lilis, Ernesto Carrion, Evgeny Shurakov, Wendy Chen, Olivier Halligon, Emily Laguna, Paul Von Schrottky, James Frost, Allen Snook, Diego Rey Mendez, Paolo Musolino, Stephenie Harris, Jorge Leandro Perez, Matt Bumgardner, Diego Rey Mendez, Eduardo Toledo, Cesar Tardaguila, Eric Johnson, Chip Snyder, Pinar Olguc, Stefanos Togoulidis, Ceyhun Ozugur, Jayson Basañes, Giovanni Lodi, Sérgio Estêvão, Aaron Douglas, James Frost, Eric Johnson, Jorge Bernal, Gerardo Pacheco, Brandon Titus, Elisa Budelli, Daniele Bogo, Thuy Copeland, Lorenzo Mattei, Jaclyn Chen, Jeremy Massel, Rachel McRoberts, Yael Rubinstein, Giorgio Ruscigno, Momo Ozawa, Leandro Alonso, Automattic Mobile.


CircleCI Version License Platform Carthage compatible

MediaEditor is an extendable library for iOS that allows you to quickly and easily add image editing features to your app. You can edit single or multiple images, from the device's library or any other source. It has been designed to feel natural and part of the OS.


  • PHAsset support
  • Editing of Plain UIImage
  • Editing of remote images
  • Single media support
  • Multiple media support
  • Editing in both portrait and landscape modes
  • Cool filters
  • Crop, zoom and rotate capability (thanks to TOCropViewController)
  • PencilKit support to annotate images
  • Easily extendable
  • Customizable UI


Using MediaEditor is very simple, just give it the media and present from a ViewController:

let assets: [PHAsset] = [asset1, asset2, asset3]
let mediaEditor = MediaEditor(assets)
mediaEditor.edit(from: self, onFinishEditing: { images, actions in
    // images contains the returned images, edited or not
    // actions contains the actions made during this session
}, onCancel: {
    // User canceled

This presents the MediaEditor from the ViewController with a callback that is called when the user is finished editing.

You can easily determine if an image has been edited by checking the isEdited property of the objects returned in the images array.

You can initialize the MediaEditor with a single or an array of: PHAsset, UIImage or any other entity that conforms to AsyncImage.

More Examples

Check the Example app for even more ways to use the MediaEditor:

  • Device Library: Edit media from the device library and output them in a UICollectionView
  • Remote Image: Edit media that is remotely hosted by conforming to the AsyncImage protocol and downloading high-quality images only when needed.
  • Plain UIImage: Editing plain UIImage's
  • Extending the MediaEditor capability by adding your own brightness extension


  • iOS 11.0+
  • Swift 5



Add the following to your Podfile:

pod 'MediaEditor'


  1. Add the following to your Cartfile:
github "wordpress-mobile/MediaEditor-iOS"
  1. Run carthage update

  2. From the Carthage/Build folder, import MediaEditor.framework and CropViewController.framework into your Xcode project.

  3. Follow the remaining steps on Getting Started with Carthage to finish integrating the framework.

Manual Installation

To install manually copy the Sources/ folder to your project and follow the steps to manual install TOCropViewController too.


Read our Contributing Guide to learn about reporting issues, contributing code, and more ways to contribute.

Getting in Touch

If you have questions about getting setup or just want to say hi, join the WordPress Slack and drop a message on the #mobile channel.


WordPress, [email protected]


MediaEditor is available under the GPL license. See the LICENSE file for more info.