iOS UIImagePickerController 前置闪光灯

Posted

技术标签:

【中文标题】iOS UIImagePickerController 前置闪光灯【英文标题】:iOS UIImagePickerController front facing flash 【发布时间】:2014-02-05 03:12:42 【问题描述】:

我一直在尝试实现前置闪光灯(是的,我知道它的质量非常糟糕)。我在尝试获取屏幕亮度并将白色子视图添加到恰到好处的时间时遇到问题,因为返回的图像从未在图像中应用闪光灯。

感谢您提供的任何帮助。

代码:

if (self.imagePicker.cameraDevice == UIImagePickerControllerCameraDeviceFront)

    if ([self.flashButton.titleLabel.text isEqualToString:@"On"]
    
        CGFloat oldBrightness = [UIScreen mainScreen].brightness;

        UIWindow *window = [UIApplication sharedApplication].keyWindow;

        UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, window.frame.size.width, window.frame.size.height)];

        [UIView animateWithDuration:1.0f
                                  delay:0.0
                                options:UIViewAnimationOptionCurveLinear
                             animations:^
         
             [self.imagePicker takePicture];
             [window addSubview:view];
             [[UIScreen mainScreen]setBrightness:1.0]
             view.backgroundColor = [UIColor whiteColor];
             view.alpha = 1.0f;
         
         completion:^(BOOL finished)
         
            if (finished) 
            
                [UIView beginAnimations:nil context:nil];
                [UIView setAnimationBeginsFromCurrentState:YES];
                [UIView setAnimationCurve:UIViewAnimationCurveLinear];
                [UIView setAnimationDuration:1.0f];
                view.alpha = 0.0;
                [view removeFromSuperview];
                [[UIScreen mainScreen]setBrightness:oldBrightness];
                [UIView commitAnimations];
            
         ];
    
    else
    
        [self.imagePicker takePicture];
    

【问题讨论】:

您的代码建议您在添加全亮度的白色子视图之前拍照。 可能是这样,但我也尝试将子视图设置为白色后拍照,结果是一样的,所以我迷路了。此外,相机实际拍摄照片会稍有延迟。 【参考方案1】:

我建议将 [self.imagePicker takePicture]; 移至完成处理程序的开头。

动画块需要 1 秒才能达到全亮,然后您将立即拍摄照片。

【讨论】:

这个问题是图像选择器需要花费不可预测的时间才能一致地拍照。但看起来这样就足够了:/

以上是关于iOS UIImagePickerController 前置闪光灯的主要内容,如果未能解决你的问题,请参考以下文章

imagePickerController 选择照片时出错

iPhone - 以编程方式删除状态栏

如何调整自定义 UIButton 的图像大小?

从保存的相机胶卷参考 url 设置 uiimageview

Segue 图像到另一个视图控制器的问题

{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO