2011-05-25 82 views
0

目前我有以下镜像CIImage/NSImage中

CIImage *img = [CIImage imageWithCVImageBuffer: imageBuffer]; 

NSCIImageRep *imageRep = [NSCIImageRep imageRepWithCIImage:img]; 
NSImage *image = [[[NSImage alloc] initWithSize: [imageRep size]] autorelease]; 
[image addRepresentation:imageRep]; 

此作品完美,我可以使用NSImage中,当写入到一个文件中的图像正是我需要它。

但是,我正在使用QTKit从用户iSight中提取此图像,因此我需要能够在Y轴上翻转此图像。

我的第一个想法是使用这样的东西来转换CIImage,但是我的最终图像总是完全空白。当写入文件时,尺寸是正确的,但看起来是空的。

- (CIImage *)flipImage:(CIImage *)image 
{ 
    return [image imageByApplyingTransform:CGAffineTransformMakeScale(-1, 1)]; 
} 

我接近这个错误的方式吗?或者我在代码中犯了错误?

回答

3

该变换将其翻转,但其翻转的轴不在图像的中心,而是在左边缘。您还必须根据图像的宽度来平移图像,以说明在缩放期间引起的移动。

1

下面是一些代码,可以帮助别人==>

CGAffineTransform rotTrans = CGAffineTransformMakeRotation(M_PI_2); 
    CGAffineTransform transTrans1 = CGAffineTransformTranslate(rotTrans, 0.0f, 320.0f); 
    CGAffineTransform scaleTrans = CGAffineTransformScale(transTrans1, 1.0, -1.0); 
    CGAffineTransform transTrans2 = CGAffineTransformTranslate(scaleTrans, -0.0f, -320.0f); 

    self.view.transform = transTrans2; 

我用它来从横向前置摄像头翻转帧所以他们总是出现了不管什么设备的旋转。这东西确实有点棘手。要帮助弄清楚发生了什么的一件事是沿着任一轴缩放并查看结果是什么。

+0

有没有这样的事情NSView.transform。该行是ios代码,而self可能是一个UIViewController,但这与NSImage无关 – 2014-05-08 10:50:22