是否可以通过imagePicker更改使用相机获得的图像大小?

时间:2016-08-23 02:55:41

标签: swift uiimagepickercontroller

当我尝试更改当前属性时,我收到的错误是大小为"仅获取属性。"有人知道解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

你可以尝试以下(我还没有运行它,非常确定它有效..)

let imagePickerView: UIView = self.imagePicker.view
let cameraViewFrame: CGRect = CGRectMake(0, self.overlay.topBarHeight, 
                                self.view.bounds.size.width, 
                                self.view.bounds.size.height -self.overlay.topBarHeight - self.overlay.bottomBarHeight);
imagePickerView.frame = cameraViewFrame
祝你好运:)

答案 1 :(得分:0)

我们可以做的是绘制一个新的UIImage。下面的代码是一个缩放传入图像的函数。在缩放图像后,尺寸会发生变化。

extension UIImage {
    class func scaleImage(image:UIImage, scaleFloat:CGFloat) -> UIImage{
            let size = CGSizeMake(image.size.width * scaleFloat, image.size.height * scaleFloat)
            UIGraphicsBeginImageContext(size)
            let context = UIGraphicsGetCurrentContext()
            var transform = CGAffineTransformIdentity
            transform = CGAffineTransformScale(transform, scaleFloat, scaleFloat)
            CGContextConcatCTM(context, transform)
            image.drawAtPoint(CGPointMake(0, 0))
            let newimg = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return newimg
        }
}

以下是将图像缩放到150x150的示例代码。但这些代码只能帮助方形图像。如果它不是方形的,你可以测试会发生什么。

extension UIImage {
    class func scaleImgTo150x150(image:UIImage) -> UIImage{
            let scale:CGFloat
            if image.size.width > image.size.height{
                scale = 150/image.size.width
            }
            else{
                scale = 150/image.size.height
            }
            return UIImage.scaleImage(image, scaleFloat: scale)
        }
}