2016-12-04 47 views
0

下面的代码会在uiimageview上拍摄图片和显示。 pitcure可以填满整个视野。如何使图像显得更小,以便保存的图像不是全部屏幕。我希望在那里拍摄照片的边框。一个矩形边框。谢谢。如何更改图像选取器控制器中的图像大小

@IBAction func Camera(_ sender: AnyObject) { 

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){ 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.camera; 
     imagePicker.allowsEditing = false 
     self.present(imagePicker, animated: true, completion: nil)}} 

      func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject: AnyObject]!){ 
       cameraScreen.image = image 
       self.dismiss(animated: true, completion: nil); 
       screenView = UIImageView() 

       screenView.frame = CGRect(x:0, y: 0, width: self.view.frame.width, height: self.view.frame.height) 





       UIGraphicsBeginImageContext(self.cameraScreen.frame.size) 
       self.view.drawHierarchy(in: self.view.frame, afterScreenUpdates: true) 



} 
+0

你想扩展您从图像拾取完成处理得到的图像? –

回答

1

这是您必须在didFinishPickingImage完成处理程序中调用的一种方法。

func resizeImage(image: UIImage, newWidth: CGFloat) -> UIImage { 

    let scale = newWidth/image.size.width 
    let newHeight = image.size.height * scale 
    UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight)) 
    image.drawInRect(CGRectMake(0, 0, newWidth, newHeight)) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return newImage 
} 

此方法将改变图像的大小。

+0

CGSize让它在Swift 3中不可用 –

+0

如何编写didFinishPickingImage完成处理程序?这是准确的func imagePickerController(picker:UIImagePickerController,didFinishPickingMediaWithInfo info:[String:AnyObject]){ 如果让pickImage = info [UIImagePickerControllerOriginalImage]为? UIImage dismissViewControllerAnimated(true,completion:{self.customFunction(pickedImage)}) } else { dismissViewControllerAnimated(true,completion:nil) } }。 –

0

更新基尔提Parghi的回答斯威夫特3

func resizeImage(image: UIImage, newWidth: CGFloat) -> UIImage? { 

    let scale = newWidth/image.size.width 
    let newHeight = image.size.height * scale 
    UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight)) 
    image.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight)) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return newImage 
}