{"id":20620913,"url":"https://github.com/irons163/ircameraviewcontroller","last_synced_at":"2025-06-18T20:35:42.637Z","repository":{"id":56915160,"uuid":"208298033","full_name":"irons163/IRCameraViewController","owner":"irons163","description":"IRCameraViewController is a powerful camera view controller for iOS.","archived":false,"fork":false,"pushed_at":"2020-02-27T02:39:35.000Z","size":6853,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-18T19:03:12.275Z","etag":null,"topics":["album","camera","effects","filters","image-processing","imagefilter","ios","objcective-c"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/irons163.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-13T15:55:34.000Z","updated_at":"2020-02-27T02:39:38.000Z","dependencies_parsed_at":"2022-08-21T03:50:31.820Z","dependency_job_id":null,"html_url":"https://github.com/irons163/IRCameraViewController","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/irons163/IRCameraViewController","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRCameraViewController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRCameraViewController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRCameraViewController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRCameraViewController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/irons163","download_url":"https://codeload.github.com/irons163/IRCameraViewController/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRCameraViewController/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260629745,"owners_count":23038980,"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","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":["album","camera","effects","filters","image-processing","imagefilter","ios","objcective-c"],"created_at":"2024-11-16T12:16:04.151Z","updated_at":"2025-06-18T20:35:37.592Z","avatar_url":"https://github.com/irons163.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build Status](https://img.shields.io/badge/build-%20passing%20-brightgreen.svg)\n![Platform](https://img.shields.io/badge/Platform-%20iOS%20-blue.svg)\n\n# IRCameraViewController \n\n- IRCameraViewController is a powerful camera view controller for iOS.\n\n## Features\n- Completely custom camera with AVFoundation\n- Custom view with camera permission denied\n- Custom button colors\n- Easy way to access album (camera roll)\n- Flash auto, off and on\n- Focus\n- Front and back camera\n- Grid view\n- Preview photo view with three filters (fast processing)\n- Visual effects like Instagram iOS app\n- Custom image filters\n\n## Install\n### Git\n- Git clone this project.\n- Copy this project into your own project.\n- Add the .xcodeproj into you  project and link it as embed framework.\n#### Options\n- You can remove the `demo` and `ScreenShots` folder.\n\n### Cocoapods\n- Add `pod 'IRCameraViewController'`  in the `Podfile`\n- `pod install`\n\n## Usage\n\n### Basic\n\n#### Take photo\n\n\n```obj-c\n#import \"IRCameraViewController.h\"\n\n@interface IRViewController : UIViewController \u003cIRCameraDelegate\u003e\n\n@property (strong, nonatomic) IBOutlet UIImageView *photoView;\n\n- (IBAction)takePhotoTapped;\n\n@end\n\n\n\n@implementation IRViewController\n\n- (IBAction)takePhotoTapped\n{\n    IRCameraNavigationController *navigationController =\n    [IRCameraNavigationController newWithCameraDelegate:self];\n\n    [self presentViewController:navigationController animated:YES completion:nil];\n}\n\n#pragma mark - IRCameraDelegate optional\n\n- (void)cameraWillTakePhoto\n{\n    NSLog(@\"%s\", __PRETTY_FUNCTION__);\n}\n\n- (void)cameraDidSavePhotoAtPath:(NSURL *)assetURL\n{\n    // When this method is implemented, an image will be saved on the user's device\n    NSLog(@\"%s album path: %@\", __PRETTY_FUNCTION__, assetURL);\n}\n\n- (void)cameraDidSavePhotoWithError:(NSError *)error\n{\n    NSLog(@\"%s error: %@\", __PRETTY_FUNCTION__, error);\n}\n\n#pragma mark - IRCameraDelegate required\n\n- (void)cameraDidCancel\n{\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n- (void)cameraDidTakePhoto:(UIImage *)image\n{\n    _photoView.image = image;\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n- (void)cameraDidSelectAlbumPhoto:(UIImage *)image\n{\n    _photoView.image = image;\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n@end\n```\n\n#### Choose photo\n\n```obj-c\n#import \"IRCameraViewController.h\"\n\n@interface IRViewController : UIViewController\n\u003cUINavigationControllerDelegate, UIImagePickerControllerDelegate\u003e\n\n@property (strong, nonatomic) IBOutlet UIImageView *photoView;\n\n- (IBAction)chooseExistingPhotoTapped;\n\n@end\n\n\n\n@implementation IRViewController\n\n- (IBAction)chooseExistingPhotoTapped\n{\n    UIImagePickerController *pickerController =\n    [IRAlbum imagePickerControllerWithDelegate:self];\n\n    [self presentViewController:pickerController animated:YES completion:nil];\n}\n\n#pragma mark - UIImagePickerControllerDelegate\n\n- (void)imagePickerController:(UIImagePickerController *)picker\ndidFinishPickingMediaWithInfo:(NSDictionary *)info\n{\n    _photoView.image = [IRAlbum imageWithMediaInfo:info];\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker\n{\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n@end\n```\n\n#### Change colors\n\n```obj-c\n@implementation IRViewController\n\n- (void)viewDidLoad\n{\n    [super viewDidLoad];\n    \n    UIColor *tintColor = [UIColor greenColor];\n    [IRCameraColor setTintColor:tintColor];\n}\n\n@end\n```\n\n#### Options\n\n|Option|Type|Default|Description|\n|:-:|:-:|:-:|:-:|\n|kIRCameraOptionHiddenToggleButton|NSNumber (YES/NO)|NO|Displays or hides the button that switches between the front and rear camera|\n|kIRCameraOptionHiddenAlbumButton|NSNumber (YES/NO)|NO|Displays or hides the button that allows the user to select a photo from their album|\n|kIRCameraOptionHiddenFilterButton|NSNumber (YES/NO)|NO|Displays or hides the button that allos the user to filter their photo|\n|kIRCameraOptionSaveImageToAlbum|NSNumber (YES/NO)|NO|Save or not the photo in the camera roll|\n|kIRCameraOptionUseOriginalAspect|NSNumber (YES/NO)|NO|Use the original aspect instead of cropping the image to a square|\n\n```obj-c\n#import \"IRCamera.h\"\n\n@implementation UIViewController\n\n- (void)viewDidLoad\n{\n    //...\n    [IRCamera setOption:kIRCameraOptionHiddenToggleButton value:@YES];\n    [IRCamera setOption:kIRCameraOptionHiddenAlbumButton value:@YES];\n    [IRCamera setOption:kIRCameraOptionHiddenFilterButton value:@YES];\n    [IRCamera setOption:kIRCameraOptionSaveImageToAlbum value:@YES];\n    //...\n}\n\n- (IBAction)buttonTapped\n{\n    //...\n    BOOL hiddenToggleButton = [[IRCamera getOption:kIRCameraOptionHiddenToggleButton] boolValue];\n    BOOL hiddenAlbumButton = [[IRCamera getOption:kIRCameraOptionHiddenAlbumButton] boolValue];\n    BOOL hiddenFilterButton = [[IRCamera getOption:kIRCameraOptionHiddenFilterButton] boolValue];\n    BOOL saveToDevice = [[IRCamera getOption:kIRCameraOptionSaveImageToAlbum] boolValue];\n    //...    \n}\n\n@end\n```\n\n### Advanced settings\n\nCustom image filters(You can see how GPUImage work in the demo project):\n\n- Return `YES` by `customizePhotoProcessingView` in the `IRCameraDelegate` to disable the default filters\n```obj-c\n\n#pragma mark - IRCameraDelegate\n\n- (BOOL)customizePhotoProcessingView {\n    return YES;\n}\n\n```\n\n- Deal with the image by your own way:\n```obj-c\n\n#import \u003cGPUImage/GPUImage.h\u003e\n\n- (UIImage *)imageWithSketchFilter:(UIImage *)originImage {\n    GPUImageFilter *imageFilter = [[GPUImageSketchFilter alloc] init];\n    return [imageFilter imageByFilteringImage:originImage];\n}\n\n```\n\n## Screenshots\n| Demo Main Page | Camera |\n|:---:|:---:|\n|![Demo Main Page](./ScreenShots/demo1.png)|![Camera](./ScreenShots/demo2.png)| \n| Camera with Grid View | Confirm |\n|![Camera with Grid View](./ScreenShots/demo3.png)|![Confirm](./ScreenShots/demo4.png)| \n| Default filters | Album |\n|![Default filters](./ScreenShots/demo5.png)|![Album](./ScreenShots/demo6.png)| \n| Custom filters | Update display view |\n|![Custom filters](./ScreenShots/demo7.png)|![Update display view](./ScreenShots/demo8.png)| \n\n## Copyright\n##### This project is inspired from [TGCameraViewController](https://github.com/tdginternet/TGCameraViewController).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firons163%2Fircameraviewcontroller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firons163%2Fircameraviewcontroller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firons163%2Fircameraviewcontroller/lists"}