2014-01-09 105 views
13

我正在使用UIImagePickerController允許用戶拍照。之後我想讓他編輯它,但無論我在做什麼,我什麼也得不到。這裏是我的代碼(我正在使用Xamarin):UIImagePickerController允許編輯不工作

UIImagePickerController imagePicker = new UIImagePickerController(); 
       // set our source to the camera 
       imagePicker.SourceType = UIImagePickerControllerSourceType.Camera; 
       // set what media types 
       //imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes (UIImagePickerControllerSourceType.Camera); 
       // show the camera controls 
       imagePicker.ModalPresentationStyle = UIModalPresentationStyle.CurrentContext; 
       imagePicker.ShowsCameraControls = true; 
       imagePicker.AllowsEditing = true; 
       imagePicker.SetEditing (true,true); 
       imagePicker.PreferredContentSize = new SizeF(900,600); 
       imagePicker.CameraCaptureMode = UIImagePickerControllerCameraCaptureMode.Photo; 
       imagePicker.Title="taste.eat. image"; 
       // attach the delegate 
       imagePicker.Delegate = new ImagePickerDelegate(); 
       // show the picker 
       NavigationController.PresentViewController(imagePicker, true,null); 

我錯過了什麼嗎?

編輯:

我都跟着教程和我正在與矩形的屏幕,但如果我平移或縮放只是彈回中心一旦我擡起我的手指。是否有可能從照片應用程序到這個屏幕?

Image from the photos application

+0

嘿,你有想過嗎?我得到了同樣的問題。 – Yevgeni

+4

從我的理解'允許編輯'只是允許你裁剪照片。它實際上不會在Photo App中顯示iOS照片編輯功能,如您在屏幕截圖 – Jack

+0

中顯示的那樣,它只允許裁剪。抱歉。 – Xcoder

回答

31

使用的UIImagePickerController的委託-imagePickerController:didFinishPickingMediaWithInfo:,我們得到使用圖像

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

即使編輯處於開啓狀態,此代碼也會始終返回原始圖像。

使用

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 

這將返回編輯的圖像編輯,如果是試穿。

希望這會有所幫助。

+0

我這個簡單的錯誤讓我很生氣,感謝您的幫助! –

0

只需更改allowsEditing = YES之類的屬性即可達到enable filters。它只會顯示裁剪工具。按照你的屏幕截圖,看起來你已經集成了一些漏洞百出的開源庫,並且沒有查看源代碼,這將很難修復你的中心裁剪錯誤。

更好地發佈一些關於您的實施的具體細節或切換到standard open source library

1

SWIFT 3

我有一個很難恢復(在我結束簡單的錯誤)裁剪圖像。而不是使用UIImagePickerControllerOriginalImage,你需要UIImagePickerControllerEditedImage。如下所示:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    // The info dictionary contains multiple representations of the image, and this uses the cropped image. 
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage 

    // Set yourImageView to display the selected image. 
    yourImage.image = selectedImage 

    // Dismiss the picker. 
    dismiss(animated: true, completion: nil) 
} 
0

它會像這樣工作。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage 

    userPhoto.image = selectedImage 

    dismiss(animated: true, completion: nil) 
}