{"id":20187346,"url":"https://github.com/wordpress-mobile/mediaeditor-ios","last_synced_at":"2025-09-05T17:31:25.316Z","repository":{"id":38290636,"uuid":"235168069","full_name":"wordpress-mobile/MediaEditor-iOS","owner":"wordpress-mobile","description":"Easy add image editing features to your iOS app! 🖼️","archived":false,"fork":false,"pushed_at":"2025-06-19T20:32:21.000Z","size":927,"stargazers_count":52,"open_issues_count":8,"forks_count":4,"subscribers_count":8,"default_branch":"trunk","last_synced_at":"2025-07-20T07:38:06.173Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wordpress-mobile.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-20T18:21:05.000Z","updated_at":"2025-06-19T20:32:24.000Z","dependencies_parsed_at":"2023-02-16T13:45:27.061Z","dependency_job_id":"7bccd7b5-2ead-4bf5-bd5f-64c03b9ce21e","html_url":"https://github.com/wordpress-mobile/MediaEditor-iOS","commit_stats":{"total_commits":148,"total_committers":11,"mean_commits":"13.454545454545455","dds":"0.30405405405405406","last_synced_commit":"a33ae3cfda635de919aa563b52d7f5fafdb2b6cc"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/wordpress-mobile/MediaEditor-iOS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wordpress-mobile%2FMediaEditor-iOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wordpress-mobile%2FMediaEditor-iOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wordpress-mobile%2FMediaEditor-iOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wordpress-mobile%2FMediaEditor-iOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wordpress-mobile","download_url":"https://codeload.github.com/wordpress-mobile/MediaEditor-iOS/tar.gz/refs/heads/trunk","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wordpress-mobile%2FMediaEditor-iOS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273790554,"owners_count":25168674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-05T02:00:09.113Z","response_time":402,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T03:22:53.909Z","updated_at":"2025-09-05T17:31:24.899Z","avatar_url":"https://github.com/wordpress-mobile.png","language":"Swift","readme":"# MediaEditor\n\n[![CircleCI](https://circleci.com/gh/wordpress-mobile/MediaEditor-iOS.svg?style=svg)](https://circleci.com/gh/wordpress-mobile/MediaEditor-iOS) [![Version](https://img.shields.io/cocoapods/v/MediaEditor.svg?style=flat)](http://cocoadocs.org/docsets/MediaEditor) [![License](https://img.shields.io/cocoapods/l/MediaEditor.svg?style=flat)](http://cocoadocs.org/docsets/MediaEditor) [![Platform](https://img.shields.io/cocoapods/p/MediaEditor.svg?style=flat)](http://cocoadocs.org/docsets/MediaEditor) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n\nMediaEditor 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.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/7040243/81301171-148fb580-904f-11ea-8f7e-00997401cece.PNG\" width=\"340\"\u003e\n\u003c/p\u003e\n\n# Features\n\n- [x] [`PHAsset`](https://developer.apple.com/documentation/photokit/phasset) support\n- [x] Editing of Plain `UIImage`\n- [x] Editing of remote images\n- [x] Single media support\n- [x] Multiple media support\n- [x] Editing in both portrait and landscape modes\n- [x] Cool filters\n- [x] Crop, zoom and rotate capability (thanks to [`TOCropViewController`](https://github.com/TimOliver/TOCropViewController))\n- [x] PencilKit support to annotate images\n- [x] Easily extendable\n- [x] Customizable UI\n\n## Usage\n\nUsing `MediaEditor` is very simple, just give it the media and present from a `ViewController`:\n\n```swift\nlet assets: [PHAsset] = [asset1, asset2, asset3]\nlet mediaEditor = MediaEditor(assets)\nmediaEditor.edit(from: self, onFinishEditing: { images, actions in\n    // images contains the returned images, edited or not\n    // actions contains the actions made during this session\n}, onCancel: {\n    // User canceled\n})\n```\n\nThis presents the MediaEditor from the `ViewController` with a callback that is called when the user is finished editing.\n\nYou can easily determine if an image has been edited by checking the `isEdited` property of the objects returned in the `images` array.\n\nYou can initialize the `MediaEditor` with a single or an array of: `PHAsset`, `UIImage` or any other entity that conforms to `AsyncImage`.\n\n## More Examples\n\nCheck the Example app for even more ways to use the MediaEditor:\n\n* Device Library: Edit media from the device library and output them in a `UICollectionView`\n* Remote Image: Edit media that is remotely hosted by conforming to the `AsyncImage` protocol and downloading high-quality images only when needed.\n* Plain UIImage: Editing plain UIImage's\n* Extending the `MediaEditor` capability by adding your own brightness extension\n\n# Requirements\n\n* iOS 11.0+\n* Swift 5\n\n# Installation\n\n### Cocoapods\n\nAdd the following to your Podfile:\n\n```ruby\npod 'MediaEditor'\n```\n\n### Manual Installation\n\n\nTo install manually copy the `Sources/` folder to your project and follow the steps to [manual install `TOCropViewController`](https://github.com/TimOliver/TOCropViewController/blob/master/README.md#installation) too.\n\n## Contributing\n\nRead our [Contributing Guide](CONTRIBUTING.md) to learn about reporting issues, contributing code, and more ways to contribute.\n\n## Getting in Touch\n\nIf you have questions about getting setup or just want to say hi, join the [WordPress Slack](https://chat.wordpress.org) and drop a message on the `#mobile` channel.\n\n## Author\n\nWordPress, mobile@automattic.com\n\n## License\n\nMediaEditor is available under the GPL license. See the [LICENSE file](./LICENSE) for more info.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwordpress-mobile%2Fmediaeditor-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwordpress-mobile%2Fmediaeditor-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwordpress-mobile%2Fmediaeditor-ios/lists"}