- ベストアンサー
Objective-C 画像の反転と回転
- Objective-Cを使用して、画像の反転と回転処理を行う方法について教えてください。
- 反転処理にはNSImageのsetFlippedメソッドを使用しますが、正しく反転されません。
- 回転処理にはNSAffineTransformを使用しますが、書式や使い方がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
推奨する処理を先に書きます。 NSBitmapImageRepで、画像をピクセル単位で取得します。別のNSBitmapImageRepのインスタンスを作成し、それに1ピクセルずつ、反転する形、あるいは回転する形で移していきます。 ひじょうに時間のかかる処理ですが、じっさいにやってみると、1500×1000ピクセルくらいの画像でも、1秒かかるかかからないかです。 setFlipped、isFlippedは、画像を反転するメソッドではありません。結果的にそうなりますが、目的は、座標の変換です。Cocoaでは、座標の原点が左下にあるのは、ご存じだと思いますが、左上に原点があるほうが、処理しやすいことが多々あります。むしろ「なんでデフォルトが左下やねん」とぼやきたくなるくらいです。setFlipped、isFlippedをYESにすると、座標の原点が左上に変わります。画像を反転するのではなく、座標を反転するのだと理解してください。 NSAffineTransformについても、用途を誤解なさっているように見受けられます。これも画像を移動、回転するものではなく、座標軸を移動、回転するものです。座標をいじるのですから、目的の処理が終了したあと、座標を元に戻しておかないと、そのあとわけがわからないことが発生します。 NSAffineTransformを使うより、NSViewに、subviewを縮小拡大したり、回転するメソッドがあるので、それで反転、回転したほうが、わかりやすいでしょう。 ※Mac OS X 10.6より、NSImageのsetFlipped、isFlippedメソッドは廃止されます。Xcodeで、Mac OS X 10.5互換でコンパイルしないと、エラーになります。
その他の回答 (1)
- harawo
- ベストアンサー率58% (3742/6450)
> と、思って調べてみたのですが、いろいろと検索してみたりしたのですが、objective-cでの該当の処理をするような情報がなく困っています。 Xcodeのヘルプを調べましょうよ。 それすら調べずに「情報がなく困って」いられては、相手にできません。 もとより、「英語が読めません」は論外。
お礼
ご指摘ありがとうございました。
お礼
アドバイスありがとうございます。 NSBitmapImageRepを使ってピクセル単位で取得していく方法で、やってみようと思います。 と、思って調べてみたのですが、いろいろと検索してみたりしたのですが、objective-cでの該当の処理をするような情報がなく困っています。