質問

を使用してい次のコードに保存フレームの映画は私のデスクトップ:

NSCIImageRep *imageRep = [NSCIImageRep imageRepWithCIImage:[CIImage imageWithCVImageBuffer:imageBuffer]];
NSImage *image = [[[NSImage alloc] initWithSize:[imageRep size]] autorelease];
[image addRepresentation:imageRep];
CVBufferRelease(imageBuffer);

NSArray *representations = [image representations];
NSData *bitmapData = [NSBitmapImageRep representationOfImageRepsInArray:representations usingType:NSJPEGFileType properties:nil];
[bitmapData writeToFile:@"/Users/ricky/Desktop/MyImage.jpeg" atomically:YES];

目の前のコードを受け、以下のようなメッセージのコンソールには、保存された結果をデスクトップ:

<Error>: CGImageDestinationFinalize image destination does not have enough images
CGImageDestinationFinalize failed for output type 'public.jpeg'

のNSImageので、割り当てオブジェクト全体のメソッドの呼び出しでもなんなのかんを受け苦情の不足額のイメージ画像です。

さんごせます。おかげさまで、事前に Ricky.

役に立ちましたか?

解決

usingType:私は、問題の原因は、あなたがNSCIImageRepの配列を渡すrepresentationOfImageRepsInArrayに反対しているということだと思う。私はNSBitmapImageRepオブジェクトの配列を期待を信じてプロパティを:,

何がやりたいことはあなたのCIImageからNSBitmapImageRepを作成することです。その後、ディスクへの書き込みにそれを使用することができます。それはおおよそ次のようになります。

CIImage *myImage = [CIImage imageWithCVImageBuffer:imageBuffer]; 
NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCIImage:myImage];
NSData *jpegData [bitmapRep representationUsingType:NSJPEGFileType properties:nil];
[jpegData writeToFile:@"/Users/ricky/Desktop/MyImage.jpeg" atomically:YES];

もちろん、あなたはすべてのエラーケースを処理し、おそらくプロパティは微調整にJPEGの作成を辞書渡したいと思います。

他のヒント

すまないんですが、なぜそうなコードで動作しないが、近いので、異なる(と思い効率とパフォーマンスおCVImageBufferにCIImageにNSCIImageRepにNSImageにNSDataも若干低レベル:-

  1. CVImageBufferにCGImage
  2. CGImageへのjpgファイル

ないコードを作ることがで抽出し、権利もそれらの例からすべきです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top