imageOrientation が喪失する件・・・

これ bug だと思うんだけんどなぁ・・・

UIImageView なんかで画像を扱ってて、CGImageRef を生成する。具体的には次のような感じ・・・

    CGImageRef imageRef = temp.image.CGImage;

すると、imageRef では imageOrientation が考慮されていない。ので、画像をタッチしたら、タッチした箇所の色を取得する、といった機能を実装しようとすると座標が合わなくて意図とは全然違う色を拾ってしまう・・・

で、どうするかというと、UIImageView の imageOrientation を調べて座標を変換すればよい、と書けば簡単なことに思えますが、imageOrientaion の定義が珍妙すぎて、思い通りにことは進まない。

imageOrientation と具体的なデバイスの向きは以下を参照。

まみったー iPhone の向きと UIImageOrientation メモ

それで、向きがわかったらどうやって変換するのかというと、こんな感じ・・・

up: 何もしない

down: x = width - x, y = height - y

left: x = y, y = width - x

right: x = y, x = y

left と right は試していないので、嘘書いてたらごめんなさい。何れにしても、うわー、これ厄介というのがわかるかと思います。