[英]UIImage from CIImage - Data length is zero?
我正在使用AVCaptureVideoDataOutput
及其委托方法來處理視頻幀。 在委托方法中,我使用sampleBuffer
創建一個CIImage
,從這里我裁剪CIImage
,將其轉換為UIImage
並顯示它。 不幸的是,我需要確定這個新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];
});
我有同樣的問題,但使用簡單的過濾圖像。
我偶然發現了它 ,它解決了這個問題。 在此之后,我能夠保存我的圖像。
CGSize size = self.originalImage.size;
CGRect rect;
rect.origin = CGPointZero;
rect.size = size;
UIGraphicsBeginImageContext(size);
[[UIImage imageWithCIImage:self.filteredImage] drawInRect:rect];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * jpegData = UIImageJPEGRepresentation(image, 1.0);
但我在“ImageContext”中只需要這兩行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.