强制使用Swift打开UIImagePickerController相机并拍摄正方形照片

5

我一直在努力寻找一种方法来启动一个带有方形实时视图的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()

如有需要,我们非常乐意提供帮助。


你有没有得到这个问题的答案?我用很少的代码打开了相机(这很棒),但我只想让正方形选项可用。 - RubberDucky4444
1个回答

0

你看过cameraOverlayView属性了吗?这似乎就是你要找的东西。

文档链接

一旦你接收到图片,你需要对它进行裁剪,因为叠加视图实际上不会进行裁剪。要裁剪,只需获取图像并将其绘制到一个较小的矩形中,该矩形的大小基于cameraOverlayView中“打开”部分的大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接