2011-05-25 66 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