• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:objective-c 画像の反転と回転)

Objective-C 画像の反転と回転

このQ&Aのポイント
  • Objective-Cを使用して、画像の反転と回転処理を行う方法について教えてください。
  • 反転処理にはNSImageのsetFlippedメソッドを使用しますが、正しく反転されません。
  • 回転処理にはNSAffineTransformを使用しますが、書式や使い方がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

推奨する処理を先に書きます。 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互換でコンパイルしないと、エラーになります。

S202
質問者

お礼

アドバイスありがとうございます。 NSBitmapImageRepを使ってピクセル単位で取得していく方法で、やってみようと思います。 と、思って調べてみたのですが、いろいろと検索してみたりしたのですが、objective-cでの該当の処理をするような情報がなく困っています。

その他の回答 (1)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.2

> と、思って調べてみたのですが、いろいろと検索してみたりしたのですが、objective-cでの該当の処理をするような情報がなく困っています。 Xcodeのヘルプを調べましょうよ。 それすら調べずに「情報がなく困って」いられては、相手にできません。 もとより、「英語が読めません」は論外。

S202
質問者

お礼

ご指摘ありがとうございました。

関連するQ&A