【问题标题】:Mirroring CIImage/NSImage镜像 CIImage/NSImage
【发布时间】:2011-09-01 23:41:12
【问题描述】:

目前我有以下

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

我是不是以错误的方式处理这个问题?还是我的代码有错误?

【问题讨论】:

    标签: objective-c macos nsimage qtkit


    【解决方案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;
    

    我使用它来水平翻转前置摄像头的帧,因此无论设备如何旋转,它们总是会出现。这东西确实有点棘手。帮助弄清楚发生了什么的一件事是沿任一轴按比例缩小并查看结果。

    【讨论】:

    • 没有 NSView.transform 这样的东西。那行是ios代码,self可能是UIViewController但这与NSImage无关
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多