私は画面の小さな領域をキャプチャし、ディスクに保存された画像のライブラリと比較するアプリケーションを作成しています。私は数年前に同様のアプリケーションを.netで書き、bitbltとWINAPIを使用しました。パフォーマンスは本当に重要であり、パフォーマンスとの違いを生み出すためにOpenGLを掘り下げても構いません。画面の領域を選択してCGimageまたはCIImageとして保存するにはどうすればよいですか?
1
A
答えて
3
あなたはこのようにいくつかのコードを使用することができます。
-(NSImage*)captureImageFromRect:(NSRect)captureRect
{
NSImage *resultingImage = nil;
CGImageRef image;
CGWindowID windowID = (CGWindowID)[[self window] windowNum];
image = CGWindowListCreateImage(NSRectToCGRect(captureRect), kCGWindowListOptionIncludingWindow|kCGWindowListOptionOnScreenBelowWindow, windowID, kCGWindowImageDefault);
resultingImage = [[NSImage alloc] initWithCGImage:image size:NSZeroSize];
CGImageRelease(image);
return [resultingImage autorelease];
}
を使用すると、「画面の領域を選択」とはどういう意味ですか?プログラムで四角形を指定するだけで、またはユーザーが指定することを意図していますか?その場合、どのユーザーインターフェイスを想像していますか? –
はい、プログラムで矩形を指定するだけです。ユーザーインターフェイスはありません。ありがとう。 – Monty