镜像CIImage / NSImage

时间:2011-05-25 17:49:35

标签: objective-c macos nsimage qtkit

目前我有以下

 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)];
}

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

2 个答案:

答案 0 :(得分:3)

该变换翻转它,但它翻转的轴不在图像的中心,而是在左边缘。您还必须按图像宽度平移图像,以便考虑尺度过程中产生的移动。

答案 1 :(得分: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;

我用它来水平翻转前置摄像头的帧,这样无论设备的旋转如何,它们总是会出现。这个东西确实有点棘手。要弄清楚发生了什么,要做的一件事就是沿着任意一个轴向下缩放,看看结果是什么。