0
AVCaptureVideoDataOutput
과 함께 비디오 프레임을 조작하는 대리자 메서드를 사용하고 있습니다. 위임 방법에서는 CIImage
을 만들기 위해 sampleBuffer
을 사용하고 여기에서 CIImage
을 자르고 UIImage
으로 변환하여 표시합니다. 죄송 합니다만이 새로운 파일 크기는 UIImage
이지만이를 0
으로 반환합니다. 코드가 작동하고 이미지가 아름답게 잘립니다. 왜 데이터가 없는지 나는 알 수 없습니다!CIImage의 UIImage - 데이터 길이가 0입니까?
왜 이럴 수 있습니까? 관련 코드는 다음과 같습니다.
//In delegate method, given sampleBuffer...
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CFDictionaryRef attachments = CMCopyDictionaryOfAttachments(kCFAllocatorDefault,
sampleBuffer, kCMAttachmentMode_ShouldPropagate);
CIImage *ciImage = [[CIImage alloc] initWithCVPixelBuffer:pixelBuffer
options:(NSDictionary *)attachments];
...
dispatch_async(dispatch_get_main_queue(), ^(void) {
CGRect rect = [self drawFaceBoxesForFeatures:features forVideoBox:clap
orientation:curDeviceOrientation];
CIImage *cropped = [ciImage imageByCroppingToRect:rect];
UIImage *image = [[UIImage alloc] initWithCIImage:cropped];
NSData *data = UIImageJPEGRepresentation(image, 1);
NSLog(@"Image size is %d", data.length); //returns 0???
[imageView setImage:image];
[image release];
});
그냥 NB에서이 두 줄 필요 - '부호없는 int를 돌려 data.length'을, 그래서 당신의'NSLog' 문 대신 다음과 같이한다 :'NSLog를 (@ "이미지 크기는 % u", data.length)' – lxt
이것은 사실입니다. 그러나 출력에는 영향을 미치지 않습니다. CoreImage가 실제로 이미지가 아니라 단지 데이터 표현이라는 것을 알고 있기 때문에 Apple의 문서를 살펴보기 위해 노력하고 있습니다. 그러나이 시점에서 나는 변환 할 때 데이터가없는 이유는 무엇인지 모르겠다. – bgoers
네, 실제로 문제가 생겨서 곤란하다. - 당신이'UIImageJPEGRepresentation'를 호출 한 후에 중단 점을 만들면 NSData 객체 실제로 데이터가 있습니다. – lxt