📹 Your next favorite image and video picker

Overview

Gallery Banner

Version Carthage Compatible License Platform Swift

Description

Gallery Icon

We all love image pickers, don't we? You may already know of ImagePicker, the all in one solution for capturing pictures and selecting images. Well, it has a sibling too, called Gallery. Based on the same engine that powers ImagePicker, Gallery has a clearer flow based on albums and focuses on the use case of selecting video. If this suits your need, give it a try 😉

Gallery has 3 tabs with easy navigation through swipe gesture

  • Images: select albums and images. Handle selection with hightlighted numbers so your users don't forget the order
  • Camera: your photographer skill goes here
  • Videos: display all videos and select. For now the use case is to select one video at a time

And, it has zero dependencies 😎

Usage

Presenting

GalleryController is the main entry point, just instantiate and give it the delegate

let gallery = GalleryController()
gallery.delegate = self
present(gallery, animated: true, completion: nil)

The content controller is not loaded until the users navigate to, which offers a much faster experience.

Delegate

The GalleryControllerDelegate requires you to implement some delegate methods in order to interact with the picker

func galleryController(_ controller: GalleryController, didSelectImages images: [Image])
func galleryController(_ controller: GalleryController, didSelectVideo video: Video)
func galleryController(_ controller: GalleryController, requestLightbox images: [Image])
func galleryControllerDidCancel(_ controller: GalleryController)

The lightbox delegate method is your chance to display selected images. If you're looking for a nice solution, here is the Lightbox that we use and love

Resolving

The delegate methods give you Image and Video, which are just wrappers around PHAsset. To get the actual asset informations, we offer many convenient methods. See example

Image

  • Use instance method resolve to get the actual UIImage
  • Use static method Image.resolve to resolve a list of images

Video

  • Use instance method fetchDuration, fetchPlayerItem, fetchAVAsset, fetchThumbnail to get more information about the selected video.

Permission

Gallery handles permissions for you. It checks and askes for photo and camera usage permissions at first launch. As of iOS 10, we need to explicitly declare usage descriptions in plist files

<key>NSCameraUsageDescription</key>
<string>This app requires access to camera</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to photo library</string>

Configuration

There are lots of customization points in Config structs. For example

Config.Permission.image = UIImage(named: ImageList.Gallery.cameraIcon)
Config.Font.Text.bold = UIFont(name: FontList.OpenSans.bold, size: 14)!
Config.Camera.recordLocation = true
Config.tabsToShow = [.imageTab, .cameraTab]

Video Editor

Gallery cares more about video with its editing functionalities. We have VideoEditor and AdvancedVideoEditor to trim, resize, scale and define quality of the selected video

func galleryController(_ controller: GalleryController, didSelectVideo video: Video) {
  controller.dismiss(animated: true, completion: nil)

  let editor = VideoEditor()
  editor.edit(video: video) { (editedVideo: Video?, tempPath: URL?) in
    DispatchQueue.main.async {
      if let tempPath = tempPath {
        let controller = AVPlayerViewController()
        controller.player = AVPlayer(url: tempPath)

        self.present(controller, animated: true, completion: nil)
      }
    }
  }
}

With the Video object, you can fetchPlayerItem, fetchAVAsset and fetchThumbnail as well

And, of course, you have the ability to customize it

Config.VideoEditor.maximumDuration = 30
Config.VideoEditor.savesEditedVideoToLibrary = true

Installation

Gallery is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'Gallery'

Gallery is also available through Carthage. To install just write into your Cartfile:

github "hyperoslo/Gallery"

Gallery can also be installed manually. Just download and drop Sources folders in your project.

Author

Hyper Interaktiv AS, [email protected]

Contributing

We would love you to contribute to Gallery, check the CONTRIBUTING file for more info.

License

Gallery is available under the MIT license. See the LICENSE file for more info.

Comments
  • Video editor not working/editedVideo equals nil

    Video editor not working/editedVideo equals nil

    I recently started using this library and really like the layout and that it takes care of some things like maximum length and saving photos/videos (so to say edited since only the first seconds allowed are saved) to the photos automatically. However, I now encountered a problem which I cannot solve. I initially used the following code in the didSelectVideo function (very similar to what is presented in the README.md):

    internal var gallery: GalleryController?
    internal let editor: VideoEditing = VideoEditor()
    
    func galleryController(_ controller: GalleryController, didSelectVideo video: Video) {    
        controller.dismiss(animated: true, completion: nil)
        
        editor.edit(video: video) { (editedVideo: Video?, tempPath: URL?) in
            DispatchQueue.main.async {
                if let tempPath = tempPath {
                    let controller = AVPlayerViewController()
                    controller.player = AVPlayer(url: tempPath)
                    
                    self.present(controller, animated: true, completion: nil) 
                }
            }
        }
    }
    

    The video in the parantheses of edit seems to have the right properties when I set a breakpoint somewhere (i.e. right amount of seconds the selected video lasts). Moreover, the values match those which can be found under self > gallery > cart > videos. But if I now enter the edit function and the breakpoint at DispatchQueue.main.async is hit, it tells me editedVideo equals nil. In addition to that, tempPath appears to be some(?) and only becomes a path when AVPlayer(url: tempPath) is hit although this doesn't seem to be a problem. The problem is no viewcontroller is presented. If I add a simple print in the completion handler of the present function, nothing is ever printed.

    Since video wasn't nil I tried the following code (in `didSelectVideo) - which didn't work either:

        print(video) //prints "Gallery.Video"
    
        controller.dismiss(animated: true, completion: nil)
        
        video.fetchPlayerItem { (playerItem) in
            DispatchQueue.main.async {
                let avPlayer = AVPlayer(playerItem: playerItem)
                
                let avPlayerViewController = AVPlayerViewController()
                avPlayerViewController.player = avPlayer
                
                //nothing happens
                self.present(avPlayerViewController, animated: true, completion: {
                    print(1)
                })
            }
        }
    

    On top of all this, there appears to be a memory leak I couldn't find a soltuion for either. Can someone help me and explain why this is happening? I would really appreciate your help!

    opened by blurtime 9
  • Cant exit from gallery after showing a preview of selected Image?

    Cant exit from gallery after showing a preview of selected Image?

    First of all,thanks for this amazing plugin. Actually i want to select only one image and on done button action ,show a preview of that image in a new viewController. i used this code to show it within the did selectImages delegate method, `func galleryController(_ controller: GalleryController, didSelectImages images: [UIImage]) {

        imageSelected = images
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let cont = storyboard.instantiateViewController(withIdentifier: "FilterAndEdit")
       
       // self.navigationController?.pushViewController(controller, animated: true)
       self.present(cont, animated: true, completion: nil)
        
       let appDelegate = UIApplication.shared.delegate as! AppDelegate
        //show
       appDelegate.window?.rootViewController = cont
      
    }
    

    it show another viewController with the selected image,And on back button action on that viewController,its moving back to Gallery also.. Then comes the problem,After coming back from previewVC,the close button of gallery is not working.it pops the gallery again and again. i using this code in galleryControllerDidCancel delegate method.func galleryControllerDidCancel(_ controller: GalleryController) {

    controller.dismiss(animated: false) {
        
        self.tabBarController?.selectedIndex = 0
    
        }
        
    }
    

    ` Im opening this gallery on tapping a tabbar under the screen.Also i getting a warning like

    Attempt to present <XXXXX.FilterAndEdit: 0x7fbd8955ee40> on <XXXXX.uploadTab: 0x7fbd89511dc0> whose view is not in the window hierarchy!

    Please help me to solve this.

    opened by jaisan123 9
  • Carthage build fails: Gallery.bundle: No such file or directory

    Carthage build fails: Gallery.bundle: No such file or directory

    Hi guys!

    I want to give Gallery a try but the build with Carthage fails: error:(my project path)/Carthage/Checkouts/Gallery/Sources/Gallery.bundle: No such file or directory

    ** BUILD FAILED ** The following build commands failed: CpResource Sources/Gallery.bundle (my user path)/Library/Caches/org.carthage.CarthageKit/DerivedData/Gallery/1.0.0/Build/Products/Release-iphoneos/Gallery.framework/Gallery.bundle

    (I removed my project and user path from the text above). Do you have any idea of what might be wrong? Thanks a lot :)!

    opened by JulianHidalgo 7
  • Demo has updated code but pods does not have update code.

    Demo has updated code but pods does not have update code.

    Demo project contains many features like:

    public struct Config {

    @available(*, deprecated, message: "Use tabsToShow instead.")
    public static var showsVideoTab: Bool {
        // Maintains backwards-compatibility.
        get {
            return tabsToShow.index(of: .videoTab) != nil
        }
        set(newValue) {
            if !newValue {
                tabsToShow = tabsToShow.filter({$0 != .videoTab})
            } else {
                if tabsToShow.index(of: .videoTab) == nil {
                    tabsToShow.append(.videoTab)
                }
            }
        }
    }
    public static var tabsToShow: [GalleryTab] = [.imageTab, .cameraTab, .videoTab]
    // Defaults to cameraTab if present, or whatever tab is first if cameraTab isn't present.
    public static var initialTab: GalleryTab?
    
    public enum GalleryTab {
        case imageTab
        case cameraTab
        case videoTab
    }
    

    }

    But When I install pods (tried Carthage also)

    public struct Config {

    public static var showsVideoTab: Bool = true
    public struct PageIndicator {
        public static var backgroundColor: UIColor = UIColor(red: 0, green: 3/255, blue: 10/255, alpha: 1)
        public static var textColor: UIColor = UIColor.white
    }
    
    public struct Camera {
        
        public static var recordLocation: Bool = false
        
        public struct ShutterButton {
            public static var numberColor: UIColor = UIColor(red: 54/255, green: 56/255, blue: 62/255, alpha: 1)
        }
        
        public struct BottomContainer {
            public static var backgroundColor: UIColor = UIColor(red: 23/255, green: 25/255, blue: 28/255, alpha: 0.8)
        }
        
        public struct StackView {
            public static let imageCount: Int = 4
        }
        
        public static var imageLimit: Int = 0
        
    }
    

    }

    ## This code just an example for issue reference. Is there is anything wrong? I tried pod update and Carthage update. But I can see the latest version of both but I can't find the code. I know I can add project directly (drag n drop) but I don't want to do that. This will restrict me to get an updated framework in future.

    opened by ChanchalW 6
  • Fix low quality thumbnails with Xcode 11

    Fix low quality thumbnails with Xcode 11

    Description

    When building the project with Xcode 11, the default value for PHImageRequestOptions.resizeMode is .fast. This causes the PHImageManager to send lower resolution images which appear blurred when displayed in the photo picker cells.

    Xcode 10, iPhone 6s, default value ->.none: 256x342, sometimes 256x454 Xcode 11, iPhone 6s, default value -> .fast: 92x124 (looks blurred)

    Changes

    • Explicitly set resizeMode to .none

    .none is the default value when building the project with Xcode 10.

    Change 1
    Before After

    (Open in new tab for better comparison)

    opened by bruno-aguiar 5
  • Fix low image resolution

    Fix low image resolution

    Fixes an issue where images taken with the camera are returning low resolution 1080p images, regardless of device.

    By adding the .photo preset, the highest possible image quality will be used for photos.

    Reference: https://developer.apple.com/documentation/avfoundation/avcapturesessionpresetphoto?language=objc

    iPhone camera photo size reference: https://www.cameracompany.com/blog/how-large-can-you-print-iphone-photos/

    Fixes #160

    opened by bruno-aguiar 5
  • AirDropped Photos Not Showing Up In Camera Roll

    AirDropped Photos Not Showing Up In Camera Roll

    Photos that are airdropped from mac to iPhone don't show up in the Gallery's camera roll (but are present in the phone's photo's app/camera roll). However, if you move photos to a new album they show up fine when you open Gallery and select that album.

    Is there any setting to have airdropped photos show up by default in the users camera roll when they open Gallery?

    opened by JCsplash 5
  • Video Editor is crashing

    Video Editor is crashing

    My requirements are I have to open Gallery from Tab Bar Controller on pressing camera button. So it open video in full screen after selection hopefully for editing. I could not edit or play more with video. I got this crash.

    2017-10-08 22:19:09.430663+0500 MOD[1368:468010] *** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<AVFullScreenPlaybackControlsViewController: 0x102805200> should have parent view controller:<AVPlayerViewController: 0x1020c7a00> but actual parent is:<AVFullScreenViewController: 0x101be8550>' *** First throw call stack: (0x1820bafe0 0x180b1c538 0x1820baf28 0x188267ccc 0x1881f4914 0x1881f3d88 0x1881f3bc8 0x18f959aa8 0x18f9585c0 0x182ae5050 0x182ac0d08 0x182ac0830 0x182aab790 0x18f9530e4 0x18f952df4 0x188203760 0x181fa9e34 0x181fa9d30 0x1881f2440 0x1881e649c 0x1883813e8 0x188380ec0 0x18831de64 0x18827be5c 0x18838196c 0x188222020 0x188366668 0x1882a6704 0x1881f3710 0x188261a80 0x188261a54 0x1882e66dc 0x18855c440 0x18855dcd0 0x1885607e4 0x1882dd794 0x18f95aa00 0x18f95db44 0x18f983a58 0x188221c54 0x188221bd4 0x18820c148 0x1882214b8 0x1887b60e8 0x1887b2434 0x1820689a8 0x182066630 0x182066a7c 0x181f96da4 0x183a01074 0x188251c9c 0x100047df0 0x180fa559c) libc++abi.dylib: terminating with uncaught exception of type NSException

    opened by ch-muhammad-adil 5
  • Repeatedly rotate the phone on camera view leads to crash.

    Repeatedly rotate the phone on camera view leads to crash.

    Use this page configuration: Config.tabsToShow = [.imageTab, .cameraTab]

    When I open the camera page with my iPhone(iPhone XR or iPhone 11 Pro) and do continuous rotate, it causes crash. It seem that PagesController`s UIScrollViewDelegate extension case Index out of range

    opened by 150vb 4
  • can not build in Xcode 10

    can not build in Xcode 10

    I try install in xcode 10 and get the issue: Ambiguous type name 'State' in 'TripleButton' Please fix it. p/s: I rename 'State' to other name (ex: State1), the project will run success. I think admin should change it for someone.

    opened by lexuanquynh 4
  • improve permissions logic

    improve permissions logic

    i'v found camera man saves photos into assets. It means that Photos permission is always required. Also, if user wants to pickup images from gallery, but do not want to use camera, we also have to show gallery controller instead of permission blocker.

    opened by geor-kasapidi 4
  • CameraMan.swift has a lot of deprecated methods in iOS

    CameraMan.swift has a lot of deprecated methods in iOS

    Hi guys, here are some of the warning alerts from Xcode: These are all in the CameraMan.swift file

    'AVCaptureStillImageOutput' was deprecated in iOS 10.0: Use AVCapturePhotoOutput instead. 'devices()' was deprecated in iOS 10.0: Use AVCaptureDeviceDiscoverySession instead. 'AVCaptureStillImageOutput' was deprecated in iOS 10.0: Use AVCapturePhotoOutput instead. 'AVVideoCodecJPEG' was deprecated in iOS 11.0: renamed to 'AVVideoCodecType.jpeg' 'AVCaptureStillImageOutput' was deprecated in iOS 10.0: Use AVCapturePhotoOutput instead. 'isFlashModeSupported' was deprecated in iOS 10.0: Use AVCapturePhotoOutput's -supportedFlashModes instead. 'flashMode' was deprecated in iOS 10.0: Use AVCapturePhotoSettings.flashMode instead.

    Can someone please rewrite the code in the GitHub CameraMan.swift file? Thank you.

    opened by ElrB 0
  • Admins, please let us know if this library is maintained further

    Admins, please let us know if this library is maintained further

    I love this library a lot. Referred this library to several of my developer friends. And, I learnt a lot from this codebase. Thank you Contributors.

    I understand it takes a lot of personal time to maintain open source libraries. But, it would help us a lot if could you please let us know if this library is going to be maintained further?

    I see many open Pull Requests and Issues pending attention. Last update on master branch is done on 13 months ago.

    Thank you!

    Cc Contributors: @3lvis @onmyway133 @iosg1sw @Ruberik @scaraux @lars-fosaas @JohnSundell @hershalle @150vb @bemusementpark @telip007 @vcalfa @petekeller2 @weakfl @neilabdev @bruno-aguiar @richardtop @Hyperseed

    opened by idevchandra 0
  • Camera Photo - Do not Save to Gallery

    Camera Photo - Do not Save to Gallery

    When I select camera tab and capture a photo, that photo is saved to gallery. Please add feature where saving photo to gallery is optional. Thanks in advance.

    opened by asifhabib 0
  • Please add support for Swift Package Manager

    Please add support for Swift Package Manager

    Please add description how to add dependency as SPM and specify the version

    When I try to add dep: Package.swift has no Package.swift manifest for version 2.4.0 in https://github.com/hyperoslo/Gallery

    opened by adriantabirta 0
  • has no Package.swift manifest

    has no Package.swift manifest

    On package file:

        dependencies: [
            // Dependencies declare other packages that this package depends on.
            .package(url: "https://github.com/hyperoslo/Gallery", from: "2.4.0")
        ],
        targets: [...]
    

    error:

    https://github.com/hyperoslo/Gallery has no Package.swift manifest 
    for version 2.4.0 in https://github.com/hyperoslo/Gallery
    
    opened by adriantabirta 0
Releases(2.4.0)
  • 2.4.0(Oct 4, 2020)

  • 2.2.0(Sep 27, 2018)

  • 2.0.6(Jan 4, 2018)

    🚀 Merged pull requests

    • Check parent before adding constraints https://github.com/hyperoslo/Gallery/pull/75, by onmyway133

    🤘 Closed issues

    • set tabsToShow crash https://github.com/hyperoslo/Gallery/issues/74
    • how to change language https://github.com/hyperoslo/Gallery/issues/76
    • launching gallery camera from landscape mode doesn't orient video in landscape https://github.com/hyperoslo/Gallery/issues/64
    Source code(tar.gz)
    Source code(zip)
  • 2.0.5(Nov 30, 2017)

    🚀 Merged pull requests

    • Fetch iCloud images asynchronously https://github.com/hyperoslo/Gallery/pull/72, by onmyway133
    • CameraView: Fix invalid constraints on iOS < 11 https://github.com/hyperoslo/Gallery/pull/73, by JohnSundell

    🤘 Closed issues

    • Loading image from iCloud https://github.com/hyperoslo/Gallery/issues/31
    Source code(tar.gz)
    Source code(zip)
  • 2.0.4(Nov 27, 2017)

    🚀 Merged pull requests

    • Fetch image from iCloud https://github.com/hyperoslo/Gallery/pull/70, by onmyway133
    • Use aspectFit https://github.com/hyperoslo/Gallery/pull/71, by onmyway133

    🤘 Closed issues

    • iPhone X support https://github.com/hyperoslo/Gallery/issues/65
    • How can I limit the number of images selected https://github.com/hyperoslo/Gallery/issues/67
    • International support https://github.com/hyperoslo/Gallery/issues/68
    • Loading image from iCloud https://github.com/hyperoslo/Gallery/issues/31
    Source code(tar.gz)
    Source code(zip)
  • 2.0.3(Nov 21, 2017)

    🚀 Merged pull requests

    • Support iPhone X https://github.com/hyperoslo/Gallery/pull/66, by onmyway133

    🤘 Closed issues

    • Value of type 'Image' has no member 'uimage' https://github.com/hyperoslo/Gallery/issues/63
    Source code(tar.gz)
    Source code(zip)
  • 2.0.2(Oct 23, 2017)

    🚀 Merged pull requests

    • adds missing @2x resources https://github.com/hyperoslo/Gallery/pull/61, by iAppDeveloper88
    • Make Cart methods public https://github.com/hyperoslo/Gallery/pull/62, by onmyway133

    🤘 Closed issues

    • Error when Bundle was renamed https://github.com/hyperoslo/Gallery/issues/58
    • Tab Selection https://github.com/hyperoslo/Gallery/issues/59
    • Gallery Bundle has resources missing https://github.com/hyperoslo/Gallery/issues/60
    • How can I restrict the max number of photos? https://github.com/hyperoslo/Gallery/issues/38
    Source code(tar.gz)
    Source code(zip)
  • 2.0.1(Oct 12, 2017)

  • 2.0.0(Oct 9, 2017)

  • 1.3.0(Aug 22, 2017)

    • Set public access to assets https://github.com/hyperoslo/Gallery/pull/40
    • Improve tab selection code. Let users pick a default tab. https://github.com/hyperoslo/Gallery/pull/29
    • Make camera tab optional https://github.com/hyperoslo/Gallery/pull/28
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(May 23, 2017)

  • 1.1.0(Apr 4, 2017)

  • 1.0.0(Jan 26, 2017)

Owner
HyperRedink
Connected creativity
HyperRedink
A very useful and unique iOS library to open image picker in just few lines of code.

ImagePickerEasy A very simple solution to implement UIImagePickerController() in your application. Requirements Swift 4.2 and above Installation Image

wajeehulhassan 6 May 13, 2022
📸 Instagram-like image picker & filters for iOS

YPImagePicker YPImagePicker is an instagram-like photo/video picker for iOS written in pure Swift. It is feature-rich and highly customizable to match

Yummypets 4k Dec 27, 2022
Image picker with custom crop rect for iOS written in Swift (Ported over from GKImagePicker)

WDImagePicker Ever wanted a custom crop area for the UIImagePickerController? Now you can have it with WDImagePicker. Just set your custom crop area a

Wu Di 96 Dec 19, 2022
📸 iMessage-like, Image Picker Controller Provides custom features.

RAImagePicker Description RAImagePicker is a protocol-oriented framework that provides custom features from the built-in Image Picker Edit. Overview O

Rashed Al-Lahaseh 14 Aug 18, 2022
FLImagePicker - A simple image picker supported multiple selection

FLImagePicker A simple image picker supported multiple selection. Features Multiple selection Gesture supported Dark mode Easy modification Installati

Allen Lee 4 Aug 17, 2022
FlaneurImagePicker is an iOS image picker that allows users to pick images from different sources (ex: user's library, user's camera, Instagram...). It's highly customizable.

FlaneurImagePicker is a highly customizable iOS image picker that allows users to pick images from different sources (ex: device's library, device's c

FlaneurApp 17 Feb 2, 2020
GPUImage 2 is a BSD-licensed Swift framework for GPU-accelerated video and image processing.

GPUImage 2 Brad Larson http://www.sunsetlakesoftware.com @bradlarson [email protected] Overview GPUImage 2 is the second generation of th

Brad Larson 4.8k Dec 29, 2022
GPUImage 3 is a BSD-licensed Swift framework for GPU-accelerated video and image processing using Metal.

GPUImage 3 Janie Clayton http://redqueengraphics.com @RedQueenCoder Brad Larson http://www.sunsetlakesoftware.com @bradlarson contact@sunsetlakesoftwa

Brad Larson 2.4k Jan 3, 2023
An open source iOS framework for GPU-based image and video processing

GPUImage Brad Larson http://www.sunsetlakesoftware.com @bradlarson [email protected] Overview The GPUImage framework is a BSD-licensed iO

Brad Larson 20k Jan 1, 2023
A GPU accelerated image and video processing framework built on Metal.

MetalPetal An image processing framework based on Metal. Design Overview Goals Core Components MTIContext MTIImage MTIFilter MTIKernel Optimizations C

null 1.5k Jan 4, 2023
BeatboxiOS - A sample implementation for merging multiple video files and/or image files using AVFoundation

MergeVideos This is a sample implementation for merging multiple video files and

null 3 Oct 24, 2022
Twitter Image Pipeline is a robust and performant image loading and caching framework for iOS clients

Twitter Image Pipeline (a.k.a. TIP) Background The Twitter Image Pipeline is a streamlined framework for fetching and storing images in an application

Twitter 1.8k Dec 17, 2022
📷 A composable image editor using Core Image and Metal.

Brightroom - Composable image editor - building your own UI Classic Image Editor PhotosCrop Face detection Masking component ?? v2.0.0-alpha now open!

Muukii 2.8k Jan 3, 2023
An image download extension of the image view written in Swift for iOS, tvOS and macOS.

Moa, an image downloader written in Swift for iOS, tvOS and macOS Moa is an image download library written in Swift. It allows to download and show an

Evgenii Neumerzhitckii 330 Sep 9, 2022
📷 A composable image editor using Core Image and Metal.

Brightroom - Composable image editor - building your own UI Classic Image Editor PhotosCrop Face detection Masking component ?? v2.0.0-alpha now open!

Muukii 2.8k Jan 2, 2023
AsyncImage before iOS 15. Lightweight, pure SwiftUI Image view, that displays an image downloaded from URL, with auxiliary views and local cache.

URLImage URLImage is a SwiftUI view that displays an image downloaded from provided URL. URLImage manages downloading remote image and caching it loca

Dmytro Anokhin 1k Jan 4, 2023
AYImageKit is a Swift Library for Async Image Downloading, Show Name's Initials and Can View image in Separate Screen.

AYImageKit AYImageKit is a Swift Library for Async Image Downloading. Features Async Image Downloading. Can Show Text Initials. Can have Custom Styles

Adnan Yousaf 11 Jan 10, 2022
A complete Mac App: drag an image file to the top section and the bottom section will show you the text of any QRCodes in the image.

QRDecode A complete Mac App: drag an image file to the top section and the bottom section will show you the text of any QRCodes in the image. QRDecode

David Phillip Oster 2 Oct 28, 2022
An instagram-like image editor that can apply preset filters passed to it and customized editings to a binded image.

CZImageEditor CZImageEditor is an instagram-like image editor with clean and intuitive UI. It is pure swift and can apply preset filters and customize

null 8 Dec 16, 2022