美文网首页
iOS硬解后获取的CVImageBufferRef转UIImag

iOS硬解后获取的CVImageBufferRef转UIImag

作者: 简繁之间_来去自然 | 来源:发表于2021-07-13 10:31 被阅读0次

iOS硬解后获取的CVImageBufferRef转UIImage  

参考链接: https://blog.csdn.net/vickyjfr/article/details/53258578

参考链接:https://www.jianshu.com/p/62351cd38573

-(void) screenshotOfVideoStream:(CVImageBufferRef)imageBuffer{

CIImage *ciImage = [CIImage imageWithCVPixelBuffer:imageBuffer];

CIContext *temporaryContext = [CIContext contextWithOptions:nil];

CGImageRef videoImage = [temporaryContext

createCGImage:ciImage

fromRect:CGRectMake(0, 0,

CVPixelBufferGetWidth(imageBuffer),

CVPixelBufferGetHeight(imageBuffer))];

UIImage *image = [[UIImage alloc] initWithCGImage:videoImage];

[self doSomethingWithOurUIImage:image];

CGImageRelease(videoImage);

}

-(UIImage *)cvsamplebufferrefToimage:(CVImageBufferRef)imageBuffer{

CVPixelBufferLockBaseAddress(imageBuffer, 0);

void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer);

size_t width = CVPixelBufferGetWidth(imageBuffer);

size_t height = CVPixelBufferGetHeight(imageBuffer);

size_t bufferSize = CVPixelBufferGetDataSize(imageBuffer);

size_t bytesPerRow = CVPixelBufferGetBytesPerRowOfPlane(imageBuffer, 0);

// Create a device-dependent gray color space

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();

// Create a bitmap graphics context with the sample buffer data

CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGImageAlphaNone);

// Create a Quartz image from the pixel data in the bitmap graphics context

CGImageRef quartzImage = CGBitmapContextCreateImage(context);

// Free up the context and color space

CGContextRelease(context);

CGColorSpaceRelease(colorSpace);

// Create an image object from the Quartz image

UIImage *image = [UIImage imageWithCGImage:quartzImage];

return image;

}

相关文章

网友评论

      本文标题:iOS硬解后获取的CVImageBufferRef转UIImag

      本文链接:https://www.haomeiwen.com/subject/bseqrltx.html