数日かかりましたが、@Dondragmer が投稿した回答のおかげで、ようやく理解できました。しかし、私は完全な解決策を投稿すると考えました。
したがって、基本的には、画像をインテリジェントに自動回転するメソッドを作成する必要がありました。マイナス面は、このメソッドをコード全体で呼び出す必要があり、特にモバイル デバイスで作業している場合は、プロセッサを集中的に使用することですが、プラス面は、画像の取得、画像のコピー、画像の貼り付け、および画像の保存と保存ができることです。それらはすべて適切に回転します。これが私が最終的に使用したコードです(メソッドはまだ100%完成しておらず、メモリリークなどを編集する必要があります)。
私は、アプリケーションに初めて画像が挿入されたことを知りました(ユーザーが「画像を撮る」、「画像を貼り付ける」、または「画像を選択する」を押したことが原因であるかどうかにかかわらず、何らかの理由で自動なしで問題なく挿入されます回転. この時点で、回転値が何であれ、 というグローバル変数に保存しましたimageOrientationWhenAddedToScreen
. これにより、作業が楽になりました. 画像を操作して画像をプログラムから保存するとき、このキャッシュされたグローバル変数をチェックして、画像を適切に回転する必要があるかどうかを判断しました。
- (UIImage*) rotateImageAppropriately:(UIImage*) imageToRotate {
//This method will properly rotate our image, we need to make sure that
//We call this method everywhere pretty much...
CGImageRef imageRef = [imageToRotate CGImage];
UIImage* properlyRotatedImage;
if (imageOrientationWhenAddedToScreen == 0) {
//Don't rotate the image
properlyRotatedImage = imageToRotate;
} else if (imageOrientationWhenAddedToScreen == 3) {
//We need to rotate the image back to a 3
properlyRotatedImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:3];
} else if (imageOrientationWhenAddedToScreen == 1) {
//We need to rotate the image back to a 1
properlyRotatedImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:1];
}
return properlyRotatedImage;
}
なぜ Apple がこの奇妙な画像回転動作をするのか、まだ 100% 確信が持てません (これを試してみてください... 携帯電話を逆さまにして写真を撮ると、最終的な写真が正しい向きになることに気付くでしょう - おそらくこれApple がこのタイプの機能を備えているのはなぜですか?)。
私はこれを理解するのにかなりの時間を費やしたことを知っているので、他の人の助けになることを願っています!