[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6876":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":39,"readmeContent":40,"aiSummary":41,"trendingCount":16,"starSnapshotCount":16,"syncStatus":42,"lastSyncTime":43,"discoverSource":44},6876,"YPImagePicker","Yummypets\u002FYPImagePicker","Yummypets","📸 Instagram-like image picker & filters for iOS","",null,"Swift",4477,1001,62,46,0,1,6,31,"MIT License",false,"master",true,[25,26,27,28,29,30,31,32,33,34,35,36,37,38],"camera","filter","gallery","image-picker","imagepicker","instagram","ios","library","photo","picker","picture","swift","video","ypimagepicker","2026-06-12 02:01:31","\u003Ch1 align=\"center\"> \u003Cbr>\u003Cimg src=\"Images\u002Flogo\u002Flogotype_horizontal.png?raw=true\" alt=\"ypimagepicker\" width=\"512\"> \u003Cbr>\n\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FYummypets\u002FYPImagePicker\u002Fmaster\u002FImages\u002Fvisual.jpg\" width=\"400px\" >\n\n## YPImagePicker\n\nYPImagePicker is an instagram-like photo\u002Fvideo picker for iOS written in pure Swift. It is feature-rich and highly customizable to match your App's requirements.\n\n[![Language: Swift 5](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flanguage-swift%205-f48041.svg?style=flat)](https:\u002F\u002Fdeveloper.apple.com\u002Fswift)\n[![Version](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fv\u002FYPImagePicker.svg?style=flat)](http:\u002F\u002Fcocoapods.org\u002Fpods\u002FYPImagePicker)\n[![Platform](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fp\u002FYPImagePicker.svg?style=flat)](http:\u002F\u002Fcocoapods.org\u002Fpods\u002FYPImagePicker)\n[![SPM compatible](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSPM-compatible-4BC51D.svg?style=flat)](https:\u002F\u002Fswift.org\u002Fpackage-manager\u002F)\n[![codebeat badge](https:\u002F\u002Fcodebeat.co\u002Fbadges\u002F9710a89d-b1e2-4e55-a4a2-3ae1f98f4c53)](https:\u002F\u002Fcodebeat.co\u002Fprojects\u002Fgithub-com-yummypets-ypimagepicker-master)\n[![License: MIT](http:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-lightgrey.svg?style=flat)](https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker\u002Fblob\u002Fmaster\u002FLICENSE)\n[![GitHub tag](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002FYummypets\u002FYPImagePicker.svg)]()\n\n\n[Installation](#installation) - [Configuration](#configuration) - [Usage](#usage) - [Languages](#languages) - [UI Customization](#ui-customization)\n\n\nGive it a quick try :\n`pod repo update` then `pod try YPImagePicker`\n\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FYummypets\u002FYPImagePicker\u002Fmaster\u002FImages\u002Flibrary.PNG\" width=\"200px\" > \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FYummypets\u002FYPImagePicker\u002Fmaster\u002FImages\u002Fphoto.PNG\" width=\"200px\" > \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FYummypets\u002FYPImagePicker\u002Fmaster\u002FImages\u002Fvideo.PNG\" width=\"200px\" > \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FYummypets\u002FYPImagePicker\u002Fmaster\u002FImages\u002Ffilters.PNG\" width=\"200px\" >\n\nThose features are available just with a few lines of code!\n\n## Notable Features\n\n🌅 Library  \n📷 Photo  \n🎥 Video  \n✂️ Crop  \n⚡️ Flash  \n🖼 Filters  \n📁 Albums  \n🔢 Multiple Selection  \n📏 Video Trimming & Cover selection  \n📐 Output image size  \nAnd many more...\n\n## Installation\n\n#### Using [CocoaPods](http:\u002F\u002Fcocoapods.org\u002F)\n\nFirst, be sure to run `pod repo update` to get the latest version available.\n\nAdd `pod 'YPImagePicker'` to your `Podfile` and run `pod install`. Also, add `use_frameworks!` to the `Podfile`.\n\n```\ntarget 'MyApp'\npod 'YPImagePicker'\nuse_frameworks!\n```\n\n#### Using [Swift Package Manager](https:\u002F\u002Fswift.org\u002Fpackage-manager\u002F)\n\nOpen SPM dependency manager through `File > Swift Packages > Add Package Dependency...`.\n\nand insert repository URL:\n\n``https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker.git``\n\nTo add dependency in your own package, just specify a package in dependencies of your `Package.swift`:\n```swift\n.package(\nname: \"YPImagePicker\",\nurl: \"https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker.git\",\n.upToNextMajor(from: \"5.0.0\")\n)\n```\nNote: This has a minimum target iOS version of `12.0`.\n\n## Plist entries\n\nIn order for your app to access camera and photo libraries,\nyou'll need to add these `plist entries` :\n\n- Privacy - Camera Usage Description (photo\u002Fvideos)\n- Privacy - Photo Library Usage Description (library)\n- Privacy - Microphone Usage Description (videos)\n\n```xml\n\u003Ckey>NSCameraUsageDescription\u003C\u002Fkey>\n\u003Cstring>yourWording\u003C\u002Fstring>\n\u003Ckey>NSPhotoLibraryUsageDescription\u003C\u002Fkey>\n\u003Cstring>yourWording\u003C\u002Fstring>\n\u003Ckey>NSMicrophoneUsageDescription\u003C\u002Fkey>\n\u003Cstring>yourWording\u003C\u002Fstring>\n```\n\n## Configuration\n\nAll the configuration endpoints are in the [YPImagePickerConfiguration](https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker\u002Fblob\u002Fmaster\u002FSource\u002FConfiguration\u002FYPImagePickerConfiguration.swift) struct.\nBelow are the default value for reference, feel free to play around :)\n\n```swift\nvar config = YPImagePickerConfiguration()\n\u002F\u002F [Edit configuration here ...]\n\u002F\u002F Build a picker with your configuration\nlet picker = YPImagePicker(configuration: config)\n```\n\n### General\n```Swift\nconfig.isScrollToChangeModesEnabled = true\nconfig.onlySquareImagesFromCamera = true\nconfig.usesFrontCamera = false\nconfig.showsPhotoFilters = true\nconfig.showsVideoTrimmer = true\nconfig.shouldSaveNewPicturesToAlbum = true\nconfig.albumName = \"DefaultYPImagePickerAlbumName\"\nconfig.startOnScreen = YPPickerScreen.photo\nconfig.screens = [.library, .photo]\nconfig.showsCrop = .none\nconfig.targetImageSize = YPImageSize.original\nconfig.overlayView = UIView()\nconfig.hidesStatusBar = true\nconfig.hidesBottomBar = false\nconfig.hidesCancelButton = false\nconfig.silentMode = true\nconfig.preferredStatusBarStyle = UIStatusBarStyle.default\nconfig.bottomMenuItemSelectedColour = UIColor(r: 38, g: 38, b: 38)\nconfig.bottomMenuItemUnSelectedColour = UIColor(r: 153, g: 153, b: 153)\nconfig.filters = [DefaultYPFilters...]\nconfig.maxCameraZoomFactor = 1.0\nconfig.fonts..\n```\n\n### Library\n```swift\nconfig.library.options = nil\nconfig.library.onlySquare = false\nconfig.library.isSquareByDefault = true\nconfig.library.minWidthForItem = nil\nconfig.library.mediaType = YPlibraryMediaType.photo\nconfig.library.defaultMultipleSelection = false\nconfig.library.maxNumberOfItems = 1\nconfig.library.minNumberOfItems = 1\nconfig.library.numberOfItemsInRow = 4\nconfig.library.spacingBetweenItems = 1.0\nconfig.library.skipSelectionsGallery = false\nconfig.library.preselectedItems = nil\nconfig.library.preSelectItemOnMultipleSelection = true\n```\n\n### Video\n```swift\nconfig.video.compression = AVAssetExportPresetHighestQuality\nconfig.video.fileType = .mov\nconfig.video.recordingTimeLimit = 60.0\nconfig.video.libraryTimeLimit = 60.0\nconfig.video.minimumTimeLimit = 3.0\nconfig.video.trimmerMaxDuration = 60.0\nconfig.video.trimmerMinDuration = 3.0\n```\n\n### Gallery\n```swift\nconfig.gallery.hidesRemoveButton = false\n```\n\n## Default Configuration\n\n```swift\n\u002F\u002F Set the default configuration for all pickers\nYPImagePickerConfiguration.shared = config\n\n\u002F\u002F And then use the default configuration like so:\nlet picker = YPImagePicker()\n```\n\nWhen displaying picker on iPad, picker will support one size only you should set it before displaying it: \n```\nlet preferredContentSize = CGSize(width: 500, height: 600);\nYPImagePickerConfiguration.widthOniPad = preferredContentSize.width;\n\n\u002F\u002F Now you can Display the picker with preferred size in dialog, popup etc\n\n```\n\n## Usage\n\nFirst things first `import YPImagePicker`.  \n\nThe picker only has one callback `didFinishPicking` enabling you to handle all the cases. Let's see some typical use cases 🤓\n\n### Single Photo\n```swift\nlet picker = YPImagePicker()\npicker.didFinishPicking { [unowned picker] items, _ in\n    if let photo = items.singlePhoto {\n        print(photo.fromCamera) \u002F\u002F Image source (camera or library)\n        print(photo.image) \u002F\u002F Final image selected by the user\n        print(photo.originalImage) \u002F\u002F original image selected by the user, unfiltered\n        print(photo.modifiedImage) \u002F\u002F Transformed image, can be nil\n        print(photo.exifMeta) \u002F\u002F Print exif meta data of original image.\n    }\n    picker.dismiss(animated: true, completion: nil)\n}\npresent(picker, animated: true, completion: nil)\n```\n\n### Single video\n```swift\n\u002F\u002F Here we configure the picker to only show videos, no photos.\nvar config = YPImagePickerConfiguration()\nconfig.screens = [.library, .video]\nconfig.library.mediaType = .video\n\nlet picker = YPImagePicker(configuration: config)\npicker.didFinishPicking { [unowned picker] items, _ in\n    if let video = items.singleVideo {\n        print(video.fromCamera)\n        print(video.thumbnail)\n        print(video.url)\n    }\n    picker.dismiss(animated: true, completion: nil)\n}\npresent(picker, animated: true, completion: nil)\n```\n\nAs you can see `singlePhoto` and `singleVideo` helpers are here to help you handle single media which are very common, while using the same callback for all your use-cases \\o\u002F\n\n### Multiple selection\nTo enable multiple selection make sure to set `library.maxNumberOfItems` in the configuration like so:\n```swift\nvar config = YPImagePickerConfiguration()\nconfig.library.maxNumberOfItems = 3\nlet picker = YPImagePicker(configuration: config)\n```\nThen you can handle multiple selection in the same callback you know and love :\n```swift\npicker.didFinishPicking { [unowned picker] items, cancelled in\n    for item in items {\n        switch item {\n        case .photo(let photo):\n            print(photo)\n        case .video(let video):\n            print(video)\n        }\n    }\n    picker.dismiss(animated: true, completion: nil)\n}\n```\n\n### Handle Cancel event (if needed)\n```swift\npicker.didFinishPicking { [unowned picker] items, cancelled in\n    if cancelled {\n        print(\"Picker was canceled\")\n    }\n    picker.dismiss(animated: true, completion: nil)\n}\n```\nThat's it !\n\n## Languages\n🇺🇸 English, 🇪🇸 Spanish, 🇫🇷 French 🇷🇺 Russian, 🇵🇱 Polish, 🇳🇱 Dutch, 🇧🇷 Brazilian, 🇹🇷 Turkish, 🇸🇾 Arabic, 🇩🇪 German, 🇮🇹 Italian, 🇯🇵 Japanese, 🇨🇳 Chinese, 🇮🇩 Indonesian, 🇰🇷 Korean, 🇹🇼 Traditional Chinese（Taiwan), 🇻🇳 Vietnamese, 🇹🇭 Thai, 🇨🇿 Czech, 🇮🇷 Farsi. \n\nIf your language is not supported, you can still customize the wordings via the `configuration.wordings` api:\n\n```swift\nconfig.wordings.libraryTitle = \"Gallery\"\nconfig.wordings.cameraTitle = \"Camera\"\nconfig.wordings.next = \"OK\"\n```\nBetter yet you can submit an issue or pull request with your `Localizable.strings` file to add a new language !\n\n## UI Customization\nWe tried to keep things as native as possible, so this is done mostly through native Apis.\n\n### Navigation bar color\n```swift\nlet coloredImage = UIImage(color: .red)\nUINavigationBar.appearance().setBackgroundImage(coloredImage, for: UIBarMetrics.default)\n\u002F\u002F UIImage+color helper https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F26542035\u002Fcreate-uiimage-with-solid-color-in-swift\n```\n\n### Navigation bar fonts\n```swift\nlet attributes = [NSAttributedString.Key.font : UIFont.systemFont(ofSize: 30, weight: .bold) ]\nUINavigationBar.appearance().titleTextAttributes = attributes \u002F\u002F Title fonts\nUIBarButtonItem.appearance().setTitleTextAttributes(attributes, for: .normal) \u002F\u002F Bar Button fonts\n```\n\n### Navigation bar Text colors\n```swift\nUINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.yellow ] \u002F\u002F Title color\nUINavigationBar.appearance().tintColor = .red \u002F\u002F Left. bar buttons\nconfig.colors.tintColor = .green \u002F\u002F Right bar buttons (actions)\n```\n\n## Original Project & Author\n\nThis project has been first inspired by [Fusuma](https:\u002F\u002Fgithub.com\u002Fytakzk\u002FFusuma)\nConsidering the big code, design changes, and all the additional features added along the way, this moved from a fork to a standalone separate repo, also for discoverability purposes.\nOriginal Fusuma author is [ytakz](http:\u002F\u002Fytakzk.me)\n\n## Core Team\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FS4cha\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FYummypets\u002FYPImagePicker\u002Fmaster\u002FImages\u002FcoreTeam1.png\" width=\"70px\">\n\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FNikKovIos\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FYummypets\u002FYPImagePicker\u002Fmaster\u002FImages\u002FcoreTeam2.png\" width=\"70px\">\n\u003C\u002Fa>\n\n## Contributors 🙏\n[ezisazis](https:\u002F\u002Fgithub.com\u002Fezisazis),\n[hanikeddah](https:\u002F\u002Fgithub.com\u002Fhanikeddah),\n[tahaburak](https:\u002F\u002Fgithub.com\u002Ftahaburak),\n[ajkolean](https:\u002F\u002Fgithub.com\u002Fajkolean),\n[Anarchoschnitzel](https:\u002F\u002Fgithub.com\u002FAnarchoschnitzel),\n[Emil](https:\u002F\u002Fgithub.com\u002Fheitara),\n[Rafael Damasceno](https:\u002F\u002Fgithub.com\u002FDamascenoRafael),\n[cenkingunlugu](https:\u002F\u002Fgithub.com\u002Fhttps:\u002F\u002Fgithub.com\u002Fcenkingunlugu)\n[heitara](https:\u002F\u002Fgithub.com\u002Fheitara)\n[portellaa](https:\u002F\u002Fgithub.com\u002Fportellaa)\n[Romixery](https:\u002F\u002Fgithub.com\u002Fromixery)\n[shotat](https:\u002F\u002Fgithub.com\u002Fshotat)\n[shalamowww](https:\u002F\u002Fgithub.com\u002Fshalamowww)\n\nSpecial thanks to [ihtiht](https:\u002F\u002Fgithub.com\u002Fihtiht) for the cool looking logo!\n\n## They helped us one way or another 👏\n[userdar](https:\u002F\u002Fgithub.com\u002Fuserdar),\n[Evgeniy](https:\u002F\u002Fgithub.com\u002FEwg777),\n[MehdiMahdloo](https:\u002F\u002Fgithub.com\u002FMehdiMahdloo),\n[om-ha](https:\u002F\u002Fgithub.com\u002Fom-ha),\n[userdar](https:\u002F\u002Fgithub.com\u002Fuserdar),\n[ChintanWeapp](https:\u002F\u002Fgithub.com\u002FChintanWeapp),\n[eddieespinal](https:\u002F\u002Fgithub.com\u002Feddieespinal),\n[viktorgardart](https:\u002F\u002Fgithub.com\u002Fviktorgardart),\n[gdelarosa](https:\u002F\u002Fgithub.com\u002Fgdelarosa),\n[cwestMobile](https:\u002F\u002Fgithub.com\u002FcwestMobile),\n[Tinyik](https:\u002F\u002Fgithub.com\u002FTinyik),\n[Vivekthakur647](https:\u002F\u002Fgithub.com\u002FVivekthakur647),\n[tomasbykowski](https:\u002F\u002Fgithub.com\u002Ftomasbykowski),\n[artemsmikh](https:\u002F\u002Fgithub.com\u002Fartemsmikh),\n[theolof](https:\u002F\u002Fgithub.com\u002Ftheolof),\n[dongdong3344](https:\u002F\u002Fgithub.com\u002Fdongdong3344),\n[MHX792](https:\u002F\u002Fgithub.com\u002FMHX792),\n[CIronfounderson](https:\u002F\u002Fgithub.com\u002FCIronfounderson),\n[Guerrix](https:\u002F\u002Fgithub.com\u002FGuerrix),\n[Zedd0202](https:\u002F\u002Fgithub.com\u002FZedd0202),\n[mohammadZ74](https:\u002F\u002Fgithub.com\u002FmohammadZ74),\n[SalmanGhumsani](https:\u002F\u002Fgithub.com\u002FSalmanGhumsani),\n[wegweiser6](https:\u002F\u002Fgithub.com\u002Fwegweiser6),\n[BilalAkram](https:\u002F\u002Fgithub.com\u002FBilalAkram),\n[KazimAhmad](https:\u002F\u002Fgithub.com\u002FKazimAhmad),\n[JustinBeBoy](https:\u002F\u002Fgithub.com\u002FJustinBeBoy),\n[SashaMeyer](https:\u002F\u002Fgithub.com\u002FSashaMeyer),\n[GShushanik](https:\u002F\u002Fgithub.com\u002FGShushanik),\n[Cez95](https:\u002F\u002Fgithub.com\u002FCez95),\n[Palando](https:\u002F\u002Fgithub.com\u002FPalando),\n[sebastienboulogne](https:\u002F\u002Fgithub.com\u002Fsebastienboulogne),\n[JigneshParekh7165](https:\u002F\u002Fgithub.com\u002FJigneshParekh7165),\n[Deepakepaisa](https:\u002F\u002Fgithub.com\u002FDeepakepaisa),\n[AndreiBoariu](https:\u002F\u002Fgithub.com\u002FAndreiBoariu),\n[nathankonrad1](https:\u002F\u002Fgithub.com\u002Fnathankonrad1),\n[wawilliams003](https:\u002F\u002Fgithub.com\u002Fwawilliams003),\n[pngo-hypewell](https:\u002F\u002Fgithub.com\u002Fpngo-hypewell),\n[PawanManjani](https:\u002F\u002Fgithub.com\u002FPawanManjani),\n[devender54321](https:\u002F\u002Fgithub.com\u002Fdevender54321),\n[Didar1994](https:\u002F\u002Fgithub.com\u002FDidar1994),\n[relaxsus](https:\u002F\u002Fgithub.com\u002Frelaxsus)\n[restoflash](https:\u002F\u002Fgithub.com\u002Frestoflash)\n\n## Dependency\nYPImagePicker relies on [prynt\u002FPryntTrimmerView](https:\u002F\u002Fgithub.com\u002Fprynt\u002FPryntTrimmerView) for provide video trimming and cover features. Big thanks to @HHK1 for making this open source :)\n\n## Obj-C support\nObjective-C is not supported and this is not on our roadmap.\nSwift is the future and dropping Obj-C is the price to pay to keep our velocity on this library :)\n\n## License\nYPImagePicker is released under the MIT license.  \nSee [LICENSE](LICENSE) for details.\n\n## Swift Version\n\n- Swift 3 -> version [**1.2.0**](https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker\u002Freleases\u002Ftag\u002F1.2.0)\n- Swift 4.1 -> version [**3.4.1**](https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker\u002Freleases\u002Ftag\u002F3.4.0)\n- Swift 4.2 -> version [**3.5.2**](https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker\u002Freleases\u002Ftag\u002F3.5.2)\nreleases\u002Ftag\u002F3.4.0)\n- Swift 5.0 -> version [**4.0.0**](https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker\u002Freleases\u002Ftag\u002F4.0.0)\n- Swift 5.1 -> version [**4.1.2**](https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker\u002Freleases\u002Ftag\u002F4.1.2)\n- Swift 5.3 -> version [**4.5.0**](https:\u002F\u002Fgithub.com\u002FYummypets\u002FYPImagePicker\u002Freleases\u002Ftag\u002F4.5.0)\n","YPImagePicker 是一个类似Instagram的照片和视频选择器，专为iOS平台设计并使用Swift语言编写。它支持从相册或相机中选取照片与视频，并提供多种滤镜效果、裁剪功能及视频编辑选项如闪光灯控制、视频修剪等。此外，该库还允许开发者根据自身需求进行高度定制化配置。适用于需要集成图片或视频选择功能的iOS应用开发场景，特别是那些追求用户体验一致性和功能丰富的社交类或多媒体处理类应用程序。",2,"2026-06-11 03:09:20","top_language"]