SimpleCam 的创建源于在提供小巧内存占用的情况下获取高质量照片的需求。Apple 的 UIImagePicker 是一款出色的应用,但由于它具有许多功能和选项,所以它使用了很多内存。这可能会导致崩溃、延迟,并导致整体体验不佳,而您只是想给用户提供快速拍照的机会。
如果您使用 UIImagePicker 捕获照片,或在 AVFoundation 中以可能的最高捕获分辨率为捕获,它将返回巨大的图像文件,大小超过数千像素。SimpleCam 通过将照片调整到手机屏幕的 2 倍大小来避免这种情况,同时仍然使用可能的最高捕获分辨率。这使得照片的文件大小显著减小,同时在移动显示上仍然看起来干净且明亮。
希望您会发现这个项目像对我一样有用!
图标由 PixelLove 提供支持
#import <UIKit/UIKit.h>
#import "SimpleCam.h"
@interface ViewController : UIViewController <SimpleCamDelegate>
@end
这是SimpleCam如何通知ViewController用户已完成操作的方法。如果有图片,则用户已拍照。如果没有,则用户未拍照就退出了相机。请确保使用SimpleCam的关闭方法来关闭SimpleCam。否则,捕获会话可能无法正确关闭,并可能导致内存泄漏。
#pragma mark SIMPLE CAM DELEGATE
- (void) simpleCam:(SimpleCam *)simpleCam didFinishWithImage:(UIImage *)image {
if (image) {
// simple cam finished with image
}
else {
// simple cam finished w/o image
}
// Close simpleCam - use this as opposed to dismissViewController: to properly end photo session
[simpleCam closeWithCompletion:^{
NSLog(@"SimpleCam is done closing ... ");
// It is safe to launch other ViewControllers, for instance, an editor here.
}];
}
SimpleCam * simpleCam = [[SimpleCam alloc]init];
simpleCam.delegate = self;
[self presentViewController:simpleCam animated:YES completion:nil];
如果您想在用户按下按钮时启动simple cam,可以将以上代码添加到buttonPress方法中,如下所示
- (void) buttonPress:(id)sender {
SimpleCam * simpleCam = [[SimpleCam alloc]init];
simpleCam.delegate = self;
[self presentViewController:simpleCam animated:YES completion:nil];
}
到此为止,就这么简单。SimpleCam将负责其他所有事情!
v1.01 发布于2014年5月19日
感谢@capezzbr 和 @dkhamsing 对本次提交做出的贡献!
[simpleCam capturePhoto]
来程序捕获照片simpleCam.disablePhotoPreview = YES
- (void) simpleCamDidLoadCameraIntoView:(SimpleCam *)simpleCam {
NSLog(@"Camera loaded ... ");
}