簡體   English   中英

來自CIImage的UIImage - 數據長度為零?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM