首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >旋转从视频帧拍摄的CGImage

旋转从视频帧拍摄的CGImage
EN

Stack Overflow用户
提问于 2010-12-05 02:26:20
回答 3查看 7.9K关注 0票数 18

这是苹果的代码(来自技术问答QA1702),用于从视频缓冲区获取UIImage。不幸的是,返回的图像被旋转了90度。我如何编辑它,以使返回的图像方向正确?

代码语言:javascript
复制
- (UIImage *) imageFromSampleBuffer:(CMSampleBufferRef) sampleBuffer 
{
    CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); 
    CVPixelBufferLockBaseAddress(imageBuffer, 0); 

    void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer); 

    size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); 
    size_t width = CVPixelBufferGetWidth(imageBuffer); 
    size_t height = CVPixelBufferGetHeight(imageBuffer); 

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 

    CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8, 
                                                 bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); 

    CGImageRef quartzImage = CGBitmapContextCreateImage(context); 
    CVPixelBufferUnlockBaseAddress(imageBuffer,0);

    CGContextRelease(context); 
    CGColorSpaceRelease(colorSpace);

    UIImage *image = [UIImage imageWithCGImage:quartzImage];

    CGImageRelease(quartzImage);

    return (image);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-05 04:54:30

取决于您使用的是前置摄像头还是后置摄像头

代码语言:javascript
复制
int frontCameraImageOrientation = UIImageOrientationLeftMirrored;
int backCameraImageOrientation = UIImageOrientationRight;

UIImage *image = [[UIImage alloc] initWithCGImage:newImage scale:(CGFloat)1.0 orientation:frontCameraImageOrientation];
票数 26
EN

Stack Overflow用户

发布于 2015-04-03 02:45:37

您可以更改videoOrientation,这样您就可以获得正确的图像

代码语言:javascript
复制
connection.videoOrientation = AVCaptureVideoOrientationPortrait

因为默认情况下视频方向不是纵向的。

票数 3
EN

Stack Overflow用户

发布于 2015-04-15 16:35:49

只需旋转上下文

只需以弧度旋转上下文即可。这个调用会将上下文旋转90度。

代码语言:javascript
复制
CGFloat degrees = 90.f;
CGFloat radians = degrees * (M_PI / 180.f);
CGContextRotateCTM(context, radians);

您可以轻松地将此方法设置为采用所需的方向并相应地旋转。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4355070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档