iOS GPUImage之GPUImageStillCamera(2)

本文深入探讨GPUImage库中GPUImageStillCamera的使用,介绍如何在iOS应用中集成摄像头功能,利用GPU进行实时图像处理,包括滤镜效果、拍照和预览等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


GPUImageStillCamera 处理实时相机图像

示例:

//
//  ViewController.m
//  GPUImageDemo
//
//  Created by hj on 16/6/30.
//  Copyright © 2016年 hj. All rights reserved.
//

#import "ViewController.h"

#import "GPUImage.h"

@interface ViewController ()
{
    UIImage *_inputImage;
    UIImage *_outputImage;
}

@property (weak, nonatomic) IBOutlet UIImageView *iconImageView;
@property (nonatomic,strong) GPUImageOutput<GPUImageInput>   *filter;
@property (nonatomic,strong) GPUImageView                    *filterImageView;
@property (nonatomic,strong) GPUImageStillCamera *stillCamera;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 初始化stillCamera
    self.stillCamera = [[GPUImageStillCamera alloc] init];
    self.stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

    // 初始化滤镜
     self.filter = [[GPUImageSepiaFilter alloc] init];

    // 添加滤镜
    [self.stillCamera addTarget:_filter];

    // 添加滤镜显示视图
     self.filterImageView = [[GPUImageView alloc] initWithFrame:self.iconImageView.frame];
    [self.iconImageView addSubview:self.filterImageView];
    [self.filter addTarget:self.filterImageView];

    // 开始捕获
    [self.stillCamera startCameraCapture];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    // 截取某一时刻的滤镜图片
    [self.stillCamera capturePhotoAsImageProcessedUpToFilter:self.filter withCompletionHandler:^(UIImage *processedImage, NSError *error) {

        // 耗内存
        NSData *dataForJPEGFile = UIImageJPEGRepresentation(processedImage, 0.8);

        // 保存到Document
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];

        NSError *error2 = nil;
        if (![dataForJPEGFile writeToFile:[documentsDirectory stringByAppendingPathComponent:@"FilteredPhoto.jpg"] options:NSAtomicWrite error:&error2])
        {
            return;
        }
    }];
}

@end



测试:(与上面关键代码的运行效果有点区别,是根据上一篇文章的示例代码修改的,将处理后的图片保存到系统相册)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值