iPhone: Get camera preview

后端 未结 3 1650
情话喂你
情话喂你 2020-12-08 12:39

I\'d like to get the image that is being displayed on the UIImagePickerController when user uses the camera. And when I get I want to process the image and display instead

相关标签:
3条回答
  • 2020-12-08 13:11

    This one is also working quite good. Use it when the camera preview is open:

    UIImage *viewImage = [[(id)objc_getClass("PLCameraController") 
                          performSelector:@selector(sharedInstance)] 
                          performSelector:@selector(_createPreviewImage)];
    

    But as far as I found out it brings the same results than the following solution which takes a 'screenshot' of the current screen:

    extern CGImageRef UIGetScreenImage();
    
    CGImageRef cgoriginal = UIGetScreenImage();
    CGImageRef cgimg = CGImageCreateWithImageInRect(cgoriginal, rect);            
    UIImage *viewImage = [UIImage imageWithCGImage:cgimg];    
    CGImageRelease(cgoriginal);                
    CGImageRelease(cgimg);  
    

    A problem I didn't still find a fix for is, how can one get the camera image very fast without any overlays?

    0 讨论(0)
  • 2020-12-08 13:12

    The unofficial call is:

    UIGetScreenImage()
    

    which you declare above the @implementation as:

    extern CGImageRef UIGetScreenImage();
    

    There may be a documented way to do this in 3.1, but I'm not sure. If not, please please file a Radar with Apple asking them to make some kind of screen grab access public!!!

    That uses your same AppleID you log in to the iPhone development portal with.

    Update: This call is not yet documented, but Apple explicitly has given the OK to use it with App Store apps.

    0 讨论(0)
  • 2020-12-08 13:23

    at least for now, there's no way to do this. (certainly no official documented way, and as far as I know nobody's figured out an unofficial way either.)

    the camera preview data is being drawn by the OS in some way that bypasses the normal graphics methods.

    0 讨论(0)
提交回复
热议问题