1

ユーザーが写真をキャプチャしているときUIImageに、カメラ画面にカスタムを追加したい。また、画像が追加されたのと同じ位置に、そのキャプチャされた画像の前景にその画像が必要です。
ここに私が欲しいものを説明するデモ画像があります
これを回避するために、私は試しました

let picker = UIImagePickerController()
picker.sourceType = .Camera
picker.view.addSubView(imageView) 

ただし、このコードを使用すると、キャプチャ画像に画像を追加するのではなく、画像のみを追加します

どんな助けでも大歓迎です。

4

2 に答える 2

1

UIImagePickerControllerのプロパティを使用して、カメラ画面の上にcameraOverlayViewを追加できます。imageView

let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .Camera
picker.cameraOverlayView = imageView

presentViewController(picker, animated: true, completion: nil)

キャプチャした写真の前景に画像を追加するには、次の拡張機能を作成できますUIImage

extension UIImage {
  func imageWithOverlayImage(overlayImage: UIImage) -> UIImage {
    let imageRect = CGRectMake(0, 0, self.size.width, self.size.height)

    UIGraphicsBeginImageContext(self.size)

    self.drawInRect(imageRect)
    overlayImage.drawInRect(imageRect)

    let resultImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return resultImage
  }
}

次に、イメージ ピッカーのデリゲート メソッドから呼び出すことができます。

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
  let image = info[UIImagePickerControllerOriginalImage] as! UIImage
  finalImage = image.imageWithOverlayImage(overlayImage!)
  dismissViewControllerAnimated(true, completion: nil)
}
于 2016-06-18T08:33:38.863 に答える
0

オーバーレイビューを入れてみてください。カスタム画像をオーバーレイビューに追加します。

func openCamera(){

        let pickercontroller : UIImagePickerController = UIImagePickerController()
        pickercontroller.delegate = self

        if(UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)){

            pickercontroller.sourceType = UIImagePickerControllerSourceType.Camera
        }
        else{
        }

        pickercontroller.editing = false
        pickercontroller.showsCameraControls = false
        let graphRect:CGRect = CGRectMake(0, 0,pickercontroller.view.frame.size.width-20 ,pickercontroller.view.frame.size.height)

        let overlayView : UIView = UIView(frame: graphRect)
        overlayView.backgroundColor = UIColor(colorLiteralRed: 0.0/255.0, green: 0/255.0, blue: 0.0/255.0, alpha: 0.5)
        overlayView.layer.opaque = false
        overlayView.opaque = false

        var maskLayer : CAShapeLayer = CAShapeLayer()
        overlayView.layer.mask = maskLayer
      }
于 2016-07-16T07:02:17.210 に答える