【问题标题】:Forcing a UIImagePickerController to open a square camera with Swift强制 UIImagePickerController 使用 Swift 打开方形相机
【发布时间】:2015-02-25 04:33:59
【问题描述】:

我一直在努力寻找一种方法来启动具有方形实时视图的 UIImagePickerController,并让它拍摄方形照片。我现在启动相机的代码如下

func takePicture() {
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary){
        println("Button capture")
        var imag = UIImagePickerController()
        imag.delegate = self
        imag.sourceType = UIImagePickerControllerSourceType.Camera
        //imag.mediaTypes = [kUTTypeImage];
        imag.allowsEditing = false
        self.presentViewController(imag, animated: true, completion: nil)
    }
}

func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!) {
    let selectedImage : UIImage = image
    //var tempImage:UIImage = editingInfo[UIImagePickerControllerOriginalImage] as UIImage

    var newImage: UIImage = resizeImageWithImage(selectedImage, size: CGSize(width: 320, height: 568))

    datImage.image=newImage

    let paths: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    let documentsDir: NSString = paths.objectAtIndex(0) as NSString

    var dateFormat = NSDateFormatter()
    dateFormat.dateFormat = "yyyy-MM-dd-HH-mm-ss"
    let now:NSDate = NSDate(timeIntervalSinceNow: 0)
    let theDate = dateFormat.stringFromDate(now)

    //Make Photo URL

    self.photoURL = NSString(format: "/%@.png", theDate)

    //save resized image

    let pathToFullPhoto: NSString = documentsDir.stringByAppendingString(self.photoURL)

    let pngFull: NSData = UIImagePNGRepresentation(newImage)
    pngFull.writeToFile(pathToFullPhoto, atomically: true)



    self.dismissViewControllerAnimated(true, completion: nil)
}

触发: self.takePicture()

任何帮助将不胜感激。

【问题讨论】:

  • 你有没有得到这个问题的答案?我用很少的代码行就可以打开相机(这很棒),但我只希望方形选项可用

标签: ios swift uiimagepickercontroller


【解决方案1】:

您是否查看过cameraOverlayView 属性?这似乎是您正在寻找的。

Link to docs

然后,您需要在收到图像后对其进行裁剪,因为覆盖视图实际上不会进行裁剪。要裁剪,只需根据cameraOverlayView 中“开口”的大小,获取图像并将其绘制成更小的矩形。

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    相关资源
    最近更新 更多