IOS Dev Intro - Create UImage from Sample Buffer Data
来源:互联网 发布:sql慢查询优化 编辑:程序博客网 时间:2024/06/01 08:46
// Create a UIImage from sample buffer data- (UIImage *) imageFromSampleBuffer:(CMSampleBufferRef) sampleBuffer{ // Get a CMSampleBuffer's Core Video image buffer for the media data CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); // Lock the base address of the pixel buffer CVPixelBufferLockBaseAddress(imageBuffer, 0); // Get the number of bytes per row for the pixel buffer size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); // Get the pixel buffer width and height size_t width = CVPixelBufferGetWidth(imageBuffer); size_t height = CVPixelBufferGetHeight(imageBuffer); // Get the number of bytes per row for the pixel buffer u_int8_t *baseAddress = (u_int8_t *)malloc(bytesPerRow*height); memcpy( baseAddress, CVPixelBufferGetBaseAddress(imageBuffer), bytesPerRow * height ); // size_t bufferSize = CVPixelBufferGetDataSize(imageBuffer); // Create a device-dependent RGB color space CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); // Create a bitmap graphics context with the sample buffer data //The context draws into a bitmap which is `width' // pixels wide and `height' pixels high. The number of components for each // pixel is specified by `space' CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst); // Create a Quartz image from the pixel data in the bitmap graphics context CGImageRef quartzImage = CGBitmapContextCreateImage(context); // Unlock the pixel buffer CVPixelBufferUnlockBaseAddress(imageBuffer,0); // Free up the context and color space CGContextRelease(context); //CGColorSpaceRelease(colorSpace); // Create an image object from the Quartz image UIImage *image = [UIImage imageWithCGImage:quartzImage scale:1.0 orientation:UIImageOrientationRight]; free(baseAddress); // Release the Quartz image CGImageRelease(quartzImage); return (image);}
0 0
- IOS Dev Intro - Create UImage from Sample Buffer Data
- IOS Dev Intro - UIControlEvent
- IOS Dev Intro - UIButton
- IOS Dev Intro - UILabel
- IOS Dev Intro - String
- IOS Dev Intro - FBO
- IOS Dev Intro - NSDictionary
- IOS Dev Intro - NSArray
- IOS Dev Intro - NSInteger
- IOS Dev Intro - NSString
- IOS Dev Intro - UISwitch
- IOS Dev Intro - Sandbox
- IOS Dev Intro - NSFileManager
- IOS Dev Intro - NSBundle
- IOS Dev Intro - NSSet
- IOS Dev Intro - Property
- IOS Dev Intro - Block
- IOS Dev Intro - Category
- Linux 下环境变量配置文件
- 占位
- 单向链表
- [Leetcode]19. Remove Nth Node From End of List
- ESRI官网关于Javascript的内容(3)__将3.x升级到4.0
- IOS Dev Intro - Create UImage from Sample Buffer Data
- 如何去除UITableView多余的空Cell
- bzoj2818(改为线性筛求欧拉函数的模版)
- nrf52 - 快速广播与慢速广播
- PHP中MySQL、MySQLi和PDO的用法和区别
- 自定义控件时绘制文字居中
- 双向链表
- Java枚举
- TCPDUMP抓包