web-dev-qa-db-ja.com

UIImagePickerController AllowsEditingが機能しない

UIImagePickerControllerを使用して、ユーザーが写真を撮れるようにしています。私は彼が後でそれを編集できるようにしたいのですが、私がしていることは何もしません。これが私のコードです(私はXamarinを使用しています):

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

16
Amit Raz

UIImagePickerController's delegateメソッド-imagePickerController:didFinishPickingMediaWithInfo:を使用する場合、画像は

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

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

使ってみてください

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

編集がオンの場合、これは編集された画像を返します。

お役に立てれば。

40
Aditya Mathur

AllowsEditingプロパティを使用すると、ユーザーは画像を選択する場合は正方形に切り取り、ビデオを選択する場合はビデオをトリミングできます。

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

この質問を参照してください: iPhone SDK-AllowEditingをオンにしてUIImagePickerControllerのトリミング領域をカスタマイズする方法

スクリーンショットに表示しているのは、残念ながらUIImagePickerControllerの一部ではありません。

23
Jack

Swift

トリミングされた画像を返すのに苦労していました(私の側の簡単な間違い)。 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)
}
7
A.J. Hernandez

Swift 4 +

Swift 4.の後にいくつかの変更がありました。UIImagePickerControllerEditedImageUIImagePickerController.InfoKey.editedImageに変更されました。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        let selectedImage = info[UIImagePickerController.InfoKey.editedImage] as! UIImage
        imageView.image = selectedImage
        dismiss(animated: true, completion: nil)

    }
1
HCG

enable filtersのようなプロパティを変更するだけではallowsEditing = YESを使用する方法はありません。切り抜きツールのみが表示されます。スクリーンショットのように、バグのあるオープンソースライブラリが統合されているようです。ソースコードを確認しないと、中央のトリミングバグを修正するのは困難です。

実装に関する具体的な詳細を投稿するか、 標準のオープンソースライブラリ に切り替えてください。

0
Tariq

このように動作します。

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

    userPhoto.image = selectedImage

    dismiss(animated: true, completion: nil)
}
0
Md. Ibrahim