【问题标题】:Immediately get UIImage after UIImagepickercontroller -(void)takePicture在 UIImagepickercontroller -(void)takePicture 之后立即获取 UIImage
【发布时间】:2012-02-10 07:16:08
【问题描述】:

我有一个带有自己的相机按钮的 cameraOverlay,当他们按下相机按钮并使用委托方法时,我使用 takePicture 方法

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info{
    [CommonClass AddToStack:@"ReviewController:imagePickerController"];
    PhotoOverlay *overlay = (PhotoOverlay*)picker.cameraOverlayView;
    [overlay setupImage:[info objectForKey:UIImagePickerControllerOriginalImage]];
}

setupImage: 方法只是为我在叠加层上的 UIImageView 设置图像

问题在于takePicture 和 imagepicker 委托方法之间有 0.3 秒的间隔,所以看起来很奇怪。当使用自定义覆盖时,我已经看到应用程序立即从按下相机转换到最终视图。

有人遇到过吗?

【问题讨论】:

    标签: iphone ios uiimagepickercontroller customization camera-overlay


    【解决方案1】:

    获取即时图像的方法是先对屏幕进行截图并使用该图像,然后调用takePicture并在准备好后将其替换为屏幕截图(屏幕截图的分辨率低于实际图像)。

    这是我的 sn-p:

    -(void)CameraPressedTake
    {
    extern CGImageRef UIGetScreenImage();
    PhotoOverlay *overlay = (PhotoOverlay*)cameraPicker.cameraOverlayView;
    
    CGImageRef cgoriginal = UIGetScreenImage();
    
    float width = 320.0;
    float height = 480.0-[overlay myHeight];
    //if it's retina...
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2) {
        width = 2*width;
        height = 2*height;
    }
    CGImageRef cgimg = CGImageCreateWithImageInRect(cgoriginal, CGRectMake(0, 0, width, height));            
    UIImage *viewImage = [UIImage imageWithCGImage:cgimg];
    [overlay setupImage:viewImage];
    CGImageRelease(cgoriginal);                
    CGImageRelease(cgimg);
    [cameraPicker takePicture];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-11
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多