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);
何か不足していますか?
編集:
チュートリアルに従って、四角形で画面に移動しましたが、パンまたはズームした場合、指を離すと中央に戻ります。写真アプリケーションからこの画面にアクセスできますか?
UIImagePickerController's delegate
メソッド-imagePickerController:didFinishPickingMediaWithInfo:
を使用する場合、画像は
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
このコードは、編集がオンであっても、常に元の画像を返します。
使ってみてください
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
編集がオンの場合、これは編集された画像を返します。
お役に立てれば。
AllowsEditing
プロパティを使用すると、ユーザーは画像を選択する場合は正方形に切り取り、ビデオを選択する場合はビデオをトリミングできます。
その他の機能はすべて、カスタムUIとコードで実装する必要があります。
この質問を参照してください: iPhone SDK-AllowEditingをオンにしてUIImagePickerControllerのトリミング領域をカスタマイズする方法
スクリーンショットに表示しているのは、残念ながらUIImagePickerController
の一部ではありません。
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)
}
Swift 4 +
Swift 4.の後にいくつかの変更がありました。UIImagePickerControllerEditedImage
がUIImagePickerController.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)
}
enable filters
のようなプロパティを変更するだけではallowsEditing = YES
を使用する方法はありません。切り抜きツールのみが表示されます。スクリーンショットのように、バグのあるオープンソースライブラリが統合されているようです。ソースコードを確認しないと、中央のトリミングバグを修正するのは困難です。
実装に関する具体的な詳細を投稿するか、 標準のオープンソースライブラリ に切り替えてください。
このように動作します。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage
userPhoto.image = selectedImage
dismiss(animated: true, completion: nil)
}