2016-09-23 37 views
0

カメラがすぐに写真を撮った後に写真のサイズを変更できません。現時点では、100×100(プロファイル写真の場合)のシーンビューの画像が表示されますが、アプリケーションを実行すると、カメラを使用した後に写真が表示されることはありません。ここに私のコードです。私が行方不明です何:UIImagePicker/Swiftで写真のサイズを変更するには

@IBAction func employeePhotoButton(sender: AnyObject) { 

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) { 
     var imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.Camera; 
     imagePicker.allowsEditing = false 
     self.presentViewController(imagePicker, animated: true, completion: nil) 

     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 
     } 

     func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) { 

      employeePhoto.image = resizeImage(image!, newWidth: 100) 

      self.dismissViewControllerAnimated(true, completion: nil); 
     } 


    } 
} 

答えて

2

は(この使用しているSwift3構文注)このような何かを試してみてください:

// your IBAction could look something like this 
@IBAction func employeePhotoButton(sender: AnyObject) 
{ 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) 
    { 
     showImagePicker(.camera) 
    } 
    else 
    { 
     print("camera not available") 
    } 
} 

// your function in your view controller to display the image picker with whichever 
// source type you want, check for source type availability before calling 
func showImagePicker(sourceType:UIImagePickerControllerSourceType) 
{ 
    // instantiates and configures class var 
    self.imagePickerController = UIImagePickerController.init() 
    self.imagePickerController?.modalPresentationStyle = .currentContext 
    self.imagePickerController?.sourceType = sourceType 
    self.imagePickerController?.delegate = self 
    self.imagePickerController?.allowsEditing = false 

    // present controller 
    self.present(self.imagePickerController!, animated: true, completion: nil) 
} 


// Image picker delegate function 
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
{ 
    // dismiss the picker view controller 
    print("Selected media with info: \(info)") 
    self.dismiss(animated: true, completion: nil) 

    // no longer need this so nil out now 
    self.imagePickerController = nil 

    // check our image is valid 
    guard (info[UIImagePickerControllerOriginalImage] != nil) else { 
     print("No image found to load...") 
     return 
    } 

    // sets our 'selectedImg' class var for use elsewhere if needed 
    selectedImg = info[UIImagePickerControllerOriginalImage] as? UIImage 

    // verify the image is not nil 
    guard selectedImg != nil else { 
     print("selected image is nil") 
     return 
    } 

    // resize our selected image 
    let resizedImage = selectedImg.convert(toSize:CGSize(width:100.0, height:100.0), scale: UIScreen.main.scale) 

    // TODO: whatever you want to do with your resized image 
    employeePhoto.image = resizedImage 
} 


extension UIImage 
{ 
    // convenience function in UIImage extension to resize a given image 
    func convert(toSize size:CGSize, scale:CGFloat) ->UIImage 
    { 
     let imgRect = CGRect(origin: CGPoint(x:0.0, y:0.0), size: size) 
     UIGraphicsBeginImageContextWithOptions(size, false, scale) 
     self.draw(in: imgRect) 
     let copied = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return copied! 
    } 
} 
+0

感謝!!あなたのレスポンスを参考にして、写真のサイズを適切に調整することができました。私の唯一の懸念は、写真が少しぼやけていることです。それが修正できるかどうかは分かりませんが、私はそのために別の問題を作成します。再度、感謝します! –

関連する問題