0

ビデオ プレビュー レイヤー内の画像のみをキャプチャしたいと思います。現在、次のように設定しています。

[self setCaptureManager:[[[CaptureSessionManager alloc] init] autorelease]];
[[self captureManager] addVideoInputFrontCamera:YES]; // set to YES for Front Camera, No for Back camera
[[self captureManager] addStillImageOutput];

[[self captureManager] addVideoPreviewLayer];
CGRect layerRect = [[[self view] layer] bounds];
[[[self captureManager] previewLayer] setBounds:CGRectMake(0, 0, 320, 400)];//was layerRect
[[[self captureManager] previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect),CGRectGetMidY(layerRect))];// was CGPointMake(CGRectGetMidX(layerRect),CGRectGetMidY(layerRect))

[[[self view] layer] addSublayer:[[self captureManager] previewLayer]];

現状では、プレビュー レイヤーはキャプチャしたいものを表していますが、カメラはそれらの境界の外にあるものもキャプチャします。画像の向きが上ではないため、写真を撮って後でトリミングすることはできず、CGImageRef機能しません。プレビューレイヤーにあるものだけをキャプチャする方法はありますか?

4

1 に答える 1

1

これは、プレビュー レイヤーが行うべきことではありません。写真を撮る必要がある場合は、stillImageOutput またはデータ バッファーを使用する必要があります。サンプルをキャプチャする方法に応じて、カメラの向きとデバイスの向きに注意する必要があります。jpg 画像の向きは、EXIF というメタデータ ディクショナリに保存されます。
Appleには、静止画像のキャプチャ方法を示すさまざまなサンプルコードがあります。ここには、 EXIF の向きについて書いたブログ投稿もあります。

于 2014-05-25T07:20:57.043 に答える