Cocoa アプリケーションで Web カメラから写真を撮っていますが、受け取った画像の中心を拡大したいと考えています。を受け取ることから始めてCIImage
、最終的に を保存しNSImage
ます。
これらのオブジェクトのいずれかを拡大するにはどうすればよいですか?
「ズーム」とは、いくつかの意味です。少なくとも画像をトリミングする必要があり、拡大することもできます。または、表示専用のスケーリングを予約することもできます。
切り抜くには、CICropフィルターを使用します。
スケーリングするには、CILanczosScaleTransformフィルターまたはCIAffineTransformフィルターのいずれかを使用します。
トリミングして拡大縮小するには、両方のフィルターを使用します。切り抜きの出力をスケールの入力として渡すだけです。
ここでは、切り抜きとスケールは同じ操作です。目的のサイズ(ズームしない場合はソースクロップのサイズ、ズームする場合はサイズを大きくする)の新しい空のNSImageを作成し、フォーカスをロックして、クロップの長方形を描画する必要があります。ソース画像をデスティネーション画像の外接する長方形に入れ、フォーカスのロックを解除します。
デスティネーションの長方形がソース(クロップ)の長方形と同じサイズでない場合は、拡大縮小されます。それらが同じサイズの場合は、単にピクセル間でコピーまたは合成されます。