2016-08-20 13 views
1

私はソフトウェアを取得しようとしているので、カメラのオーバーレイに表示されている四角形内の画像の部分だけが画像として表示されます。後部カメラはうまく動作しますが、フロントカメラで写真を撮ろうとすると何らかの理由でソフトウェアが画像を縮小してしまい、理由が分かりません。私が間違っていることについて何らかのアイデアをいただければ幸いです。正面向きのカメラ画像の奇妙な問題

@IBAction func takePicture(sender: UIButton) 
{ 
    let alertController = UIAlertController(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet) 
    let takePictureAction = UIAlertAction(title: "Take Picture", style: UIAlertActionStyle.Default) 
    { (alertAction: UIAlertAction!) -> Void in 
     self.isCameraPic = true 
     let picker = UIImagePickerController() 
     picker.delegate = self 
     picker.sourceType = .Camera 
     var f: CGRect 
     f = picker.view.bounds 
     let overlayIV = UIImageView(frame: f) 

     overlayIV.image = UIImage(named: "cameraTarget") 
     picker.cameraOverlayView = overlayIV 
     self.presentViewController(picker, animated: true, completion: nil) 
    } 
    let chooseExistingPicture = UIAlertAction(title: "Use Existing", style: UIAlertActionStyle.Default) {(alertAction: UIAlertAction!) -> Void in 
     self.isCameraPic = false 
     let picker = UIImagePickerController() 
     picker.delegate = self 
     picker.sourceType = .PhotoLibrary 
     self.presentViewController(picker, animated: true, completion: nil) 
    } 
    alertController.addAction(takePictureAction) 
    alertController.addAction(chooseExistingPicture) 
    alertController.view.tintColor = UIColor.blackColor() 
    presentViewController(alertController, animated: true, completion: nil) 
    let presentationController = alertController.popoverPresentationController 
    presentationController?.sourceView = self.view 
    presentationController?.sourceRect = CGRectMake(330, 210, 330, 210) 
} 
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
{ 

    var image = info[UIImagePickerControllerOriginalImage] 

    let imageSize = image?.size 
    if isCameraPic! == true && picker.cameraDevice == UIImagePickerControllerCameraDevice.Rear 
    { 
     UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGFloat(1140), CGFloat(1140)), false, 0.0) 
     image?.drawAtPoint(CGPointMake(CGFloat(-400), CGFloat(-700))) 
     image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
    } 
    else if picker.cameraDevice == UIImagePickerControllerCameraDevice.Front 
    { 
     UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGFloat(4000), CGFloat(4000)), true, 0.0) 
     image?.drawAtPoint(CGPointMake(CGFloat(0), CGFloat(0))) 
     image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

    } 
    CustomPicture.image = image as? UIImage; 
    hasCustomImage = true 
    changedImage = true 
    dismissViewControllerAnimated(true, completion: nil) 
} 

前面のカメラは、背面のカメラと同じコードを使用していました。デバッグ中に変更しましたが、おそらく変わったと思いました。変換が2回適用されているような振る舞いですが、私はそれを確認して1回だけ適用されます。あなたの助けのための

おかげで、
ショーン

答えて

0

それは私が私が小さい数字で欲しい結果を得ることができることが判明しました。フロントカメラのピクセル数はバックカメラのピクセル数と異なる必要があります。とにかく、誰かがこれをやろうとしているのであれば、大きなものではなく小さな数値を試してみてください。