2014-01-09 11 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

ねえ、あなたはそれを理解しましたか? iveも同じ問題を抱えていました。 – Yevgeni

+4

私の理解では、 'letsEditing'は単純に写真を切り抜くことができます。スクリーンショットに表示されているように、写真アプリでiOSの写真編集機能を実際に起動するわけではありません。 – Jack

+0

これは、トリミングのみ可能です。ごめんなさい。 – Xcoder

答えて

19

AllowsEditingプロパティは、単に、ユーザが画像を選ぶ場合は正方形にトリミングし、ビデオを選ぶ場合は、ビデオをトリミングすることを可能にします。

カスタムUIとコードで他の機能を実装する必要があります。

この質問を参照してください:iPhone SDK - How to customize the crop rect in UIImagePickerController with allowsEditing on?

あなたはスクリーンショットに表示されていることUIImagePickerControllerの一部ではありません、UIImagePickerControllerのデリゲート-imagePickerController使用する場合は、残念ながら

31

:didFinishPickingMediaWithInfoを:、我々は

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
を使用して画像を取得します

このコードは、編集がオンであっても、元の画像を常に返します。

は編集がONの場合、これは編集した画像を返します

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) 
} 
関連する問題