このコードは、UIImagePickerController を使用するためのアップルのドキュメントから取得したため、私を悩ませています。「if (editedImage)」で画像が編集されたかどうかをチェックするセクションは、常に true になります。ピッカーが編集YESに設定されている場合、画像が編集されていなくてもUIImagePickerControllerEditedImageには常にデータがあるため、これは(このサイトの人々によると)そうです。問題は、両方 (UIImagePickerControllerEditedImage と UIImagePickerControllerOriginalImage) が非 nil であることが判明した場合、どちらが選択されたかをどのように知ることができるかということです。
こことGoogleで多くのチュートリアルと他の多くの質問を調べました。しかし、編集していなくても、コードのロジックによって編集された画像が 100% 取得されるという同じ事実に戻ります。
このコードと他の質問で与えられた他のコードをテストしましたが、問題は常に同じままで、ユーザーが使用したいものかわかりません。ディクショナリに知っておくべき BOOL 値があれば、本当に役に立ちます。
アルバムから写真を選択するか、新しい写真を撮る場合にアプリをテストしているときに、編集画面に移動し、画像をキャンセルまたは受け入れてサイズ変更/トリミングできます。また、承認を押すと、画像に触れていなくても、常に編集された画像が表示されます。
イメージ ピッカーの Apple ドキュメント API のコードを次に示します。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
UIImage *originalImage, *editedImage, *imageToSave;
// Handle a still image capture
if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0)
== kCFCompareEqualTo) {
editedImage = (UIImage *) [info objectForKey:
UIImagePickerControllerEditedImage];
originalImage = (UIImage *) [info objectForKey:
UIImagePickerControllerOriginalImage];
if (editedImage) {
imageToSave = editedImage;
} else {
imageToSave = originalImage;
}
}
// work with image or save and exit modal.
}