目前我有以下
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)];
}
我接近这个错误的方式吗?或者我在代码中犯了错误?
答案 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;
我用它来水平翻转前置摄像头的帧,这样无论设备的旋转如何,它们总是会出现。这个东西确实有点棘手。要弄清楚发生了什么,要做的一件事就是沿着任意一个轴向下缩放,看看结果是什么。