如何从前置摄像头或后置摄像头检测到库图像

时间:2016-02-26 18:00:01

标签: ios objective-c iphone uiimage uiimagepickercontroller

我知道这不是一个很好的问题,但我被困住了。如何检测用户何时从库中取出图像而不是从相机中取出图像并通过前置摄像头或后置摄像头保存此库图像?像

if (library image from front camera)
{
  // Do something here
}  
else {
 // Do something here
} 

1 个答案:

答案 0 :(得分:0)

您的代码会检查设备上的可用摄像头。您需要做的是阅读之后>图片的元数据,其中包括相机信息。

使用此解决方案阅读图片随附的Exif数据,以找出相机获得的数据:Exif Data from Image

您可以查看信息词典UIImagePicker中的图片EXIF数据传入其中的回调。

- (IBAction) handleTakePhoto:(UIButton *)sender {

    UIImagePickerController* picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;

    [self presentViewController:picker animated:YES completion:nil];

}

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    __block NSDictionary* metadata = [info objectForKey:UIImagePickerControllerMediaMetadata];

    dispatch_async(dispatch_get_main_queue(), ^{

        NSLog(@"%@", [metadata valueForKeyPath:@"{Exif}.LensModel"]);

        [picker dismissViewControllerAnimated:YES completion:nil];

    });

}

以上代码段输出

  

iPhone 6 Plus后置摄像头4.15mm f / 2.2

你必须解析"前面"或"返回"部分字符串。

依赖于解析从字符串中解析出来的东西会引发一些危险信号 - 可能有更好更稳定的方法。