close
当前位置: 物联网在线 > 技术文库 > ios >

开源一个上架 App Store 的相机 App

开源一个上架 App Store 的相机 App

1、GLKView和GPUImageVideoCamera

一开始取景框的预览我是基于 GLKView 做的,GLKView 是苹果对 OpenGL 的封装,我们可以使用它的回调函数 -glkView:drawInRect: 进行对处理后的 samplebuffer 渲染的工作( samplebuffer 是在相机回调 didOutputSampleBuffer 产生的),附上当初简版代码:

- (CIImage *)renderImageInRect:(CGRect)rect {     CMSampleBufferRef sampleBuffer = _sampleBufferHolder.sampleBuffer;       if (sampleBuffer != nil) {         UIImage *originImage = [selfimageFromSamplePlanerPixelBuffer:sampleBuffer];         if (originImage) {           if (self.filterName && self.filterName.length > 0) {                 GPUImageOutput<GPUImageInput> *filter;                 if ([self.filterTypeisEqual: @"1"]) {                     Class class = NSClassFromString(self.filterName);                     filter = [[class alloc]init];                 } else {                     NSBundle *bundle = [NSBundlebundleForClass:self.class];                     NSURL *filterAmaro = [NSURLfileURLWithPath:[bundlepathForResource:self.filterNameofType:@"acv"]];                     filter = [[GPUImageToneCurveFilter alloc]initWithACVURL:filterAmaro];                 }                 [filterforceProcessingAtSize:originImage.size];                 GPUImagePicture *pic = [[GPUImagePicture alloc]initWithImage:originImage];                 [picaddTarget:filter];                 [filteruseNextFrameForImageCapture];                 [filteraddTarget:self.gpuImageView];                 [picprocessImage];                               UIImage *filterImage = [filterimageFromCurrentFramebuffer];                 //UIImage *filterImage = [filter imageByFilteringImage:originImage];                   _CIImage = [[CIImage alloc]initWithCGImage:filterImage.CGImageoptions:nil];             } else {             _CIImage = [CIImageimageWithCVPixelBuffer:CMSampleBufferGetImageBuffer(sampleBuffer)];         }     }       CIImage *image = _CIImage;       if (image != nil) {         image = [imageimageByApplyingTransform:self.preferredCIImageTransform];           if (self.scaleAndResizeCIImageAutomatically) {           image = [selfscaleAndResizeCIImage:imageforRect:rect];         }     }       return image; }   - (void)glkView:(GLKView *)viewdrawInRect:(CGRect)rect {     @autoreleasepool {         rect = CGRectMultiply(rect, self.contentScaleFactor);         glClearColor(0, 0, 0, 0);         glClear(GL_COLOR_BUFFER_BIT);           CIImage *image = [selfrenderImageInRect:rect];           if (image != nil) {             [_context.CIContextdrawImage:imageinRect:rectfromRect:image.extent];         }     } }  
(责任编辑:ioter)

用户喜欢...

iOS开源:WJClipsButton-Clips 按钮的完整实现

效果 要求 Swift 3.0 iOS 8.0 Xcode 8.0 安装 WJClipsButton is available through CocoaPods . To install it, simply add the following line to your Podfile: pod "WJClipsButton" 使用 Code Import import WJClipsButton Init Setup let wjButton = WJCl...


WCDB:微信开源的高效、完整、易用的移动数据库框架

WCDB是一个高效、完整、易用的移动数据库框架,基于 SQLCipher ,支持iOS, macOS和Android。 WCDB for iOS/macOS 基本功能 WINQ (WCDB语言集成查询): 通过WINQ,开发者无须为了拼接SQL的字符串而写一大坨胶...


33 款主宰 2017 iOS 开发的开源库

你好, iOS 开发者们 !我的名字是 Pawel,是一名 iOS 独立开发者,也是 Enter Universe 的作者。 大概在两年前,我发布了 。这篇文章是我的一个最佳纪录(用户好评数): 因为有 15.5万人 关注过...


iOS开源:CBPic2ker - 图片选择,不但酷而且美还支持人脸识别

效果 特性 酷 给你丝滑的美 人脸识别 版本要求 iOS 8.0 安装 CBPic2ker 已经支持了CocoaPods. 只要在你的 Podfile 文件中添加下面的语句即可: pod "CBPic2ker" 不要忘记在info.plist文件中添加描述: 使用...


iOS开源:iOSPalette-图片精确提取主色调算法

Objective-C版本的Google Palette算法在Java.A工具中提取了一个图像的主要颜色。与传统的算法相比,iOSPalette可以帮助您提取更有可能成为“主色”的主色。它不是 总是像素数中最大的。 2.Why iOS-...


IOS开源:HHBadgeHUD-一款更 Q 的通知图标控件(OC)

一款更Q的通知图标控件。 演示项目 查看并运行 HHBadgeHUDDemo/HHBadgeHUDDemo.xcodeproj 特性 无侵入性 : 轻量 : 易扩展 : 使用方法 ###数字图标样式 // 1. 给UIView添加通知图标self.oneView.hh_badge = [HHCountB...


iOS开源:UILabel-可设置字间距,行间距等

屏幕快照 2016-04-14 下午9.58.53.png 实现的功能: 简单的利用Runtime给UILabel添加了属性 字间距 行间距 设置下划线 设置关键字 自适应宽高 详细用法请查看Demo...


如何写出一个丝滑的图片浏览器

那时,我想要一个这样的图片浏览器: 从小图进入大图浏览时,使用转场动画 可加载网络图片,且过渡自然,不阻塞操作 可各种姿势玩弄图片,且过渡自然,不阻塞操作 可以在往下拉时,...


iOS开源-轻量级 JSON 转 Model 框架,使用链式编程,无侵入

SuperKVC is a light-weight injection framework to convert JSON to Model. SuperKVC has its own config DSL which provides a chainable way of describing your injection config concise and readable. SuperKVC supports iOS and macOS. Samples are at the Su...


iOS开源:Magnetic - 可定制地类似 Apple Music 磁力吸引式泡泡选择器组件

Magneticis a customizable bubble picker like the Apple Music genre selection. $ pod try Magnetic 要求 iOS 9.3+ Xcode 8.0+ Swift 3.0+ 使用 A Magnetic object is an SKScene . To display, you present it from an SKView object. import Magneticclass V...