0

私はそれ自身のカメラボタンとcameraOverlayを持っており、彼らはカメラボタンを押すだけすぐUIImagepickercontroller後にUIImageを取得 - (無効)takePicture

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

setupImage:メソッドをデリゲートメソッドを使用するとき、私はtakePictureメソッドを使用しますオーバーレイにあるUIImageViewの画像を設定します

これは、takePictureとimagepickerデリゲートメソッドの間に0.3秒のギャップがあり、本当に変わっているようです。私はカスタムオーバーレイを使用しているときに、カメラを押してから最後のビューにすぐに移行するアプリケーションを見てきました。

誰かがこれに遭遇しましたか?

+0

申し訳ありませんが、このコメントを削除します – NeverBe

答えて

1

インスタントイメージを取得する方法は、スクリーンのスクリーンショットを作成してそのイメージを最初に使用し、次にtakePictureを呼び出し、準備ができたらスクリーンショットに置き換えます(スクリーンショットは実際のイメージよりも低い解像度です) 。ここで

は私の抜粋です:

-(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]; 
} 
関連する問題