2013-05-28 1 views
0

나는 iOS에서 CVPixelBufferCreateWithBytes() 함수의 예를 찾고 있어요?CVPixelBufferCreateWithBytes 빠르게

나는 32BGRA 픽셀의 C 스타일 배열을 가지고 신속하게 복사하지 않고 CIImage을 만들 찾고 있어요. 더 좋은 방법이 있다면 시험 적으로 int* -> CVPixelBuffer -> CIImage.

을 포함하는 것입니다 내 솔루션, 알려 주시기 바랍니다. 고맙습니다!

답변

0

방법에 대해 :

+ (CIImage *)imageWithBitmapData:(NSData *)d bytesPerRow:(size_t)bpr size:(CGSize)size format:(CIFormat)f colorSpace:(CGColorSpaceRef)cs 

(전체 URL : http://developer.apple.com/library/ios/Documentation/GraphicsImaging/Reference/QuartzCoreFramework/Classes/CIImage_Class/Reference/Reference.html#//apple_ref/occ/clm/CIImage/imageWithBitmapData:bytesPerRow:size:format:colorSpace :

그것은이 방법은 트릭을 할 수 있다는 것! 그러나 C 스타일 배열이 어떤 데이터 형식인지 정확히 알지 못하므로이 방법으로 천천히 진행하십시오. 데이터가이 형식에 있어야처럼 유용 보이는

kCIFormatARGB8 
A 32 bit-per-pixel, fixed-point pixel format. 
+0

(워드 프로세서에 따라) 보인다. 그러나 int *를 NSData *에 어떻게 가져 옵니까? 내가 보낼 수있는 init 클래스 메소드가없는 것 같습니다. NSData는 포인터 래퍼 일종인가요? – mrplants

+0

NSData는 단지 바이트를 보유하는 objective-c 객체입니다. '+ (id) dataWithBytes : (const void *) 바이트 길이 : (NSUInteger) length'를 사용하는 것이 좋습니다. int 배열을 (const void *)로 변환했는지 확인하십시오. 나는 Ints가 32 비트이기 때문에 이것이 작동해야한다고 생각한다. (내가 틀렸다면 나를 바로 잡는다) – Sequence

+0

또 다른 일. 복사하지 않고 복사하려는 경우이 다른 방법이 더 좋을 수 있습니다. 링크가 작동하지 않을 수 있지만이 메서드는 dataWithBytesNoCopy : length :라고합니다. http://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/occ/clm/NSData/dataWithBytesNoCopy : length : – Sequence