2012-08-17 56 views
1

當我在一些圖像上運行核心圖像過濾器(如CIHueAdjust)時,它們會意外旋轉90度 - 逆時針旋轉。這種扭曲似乎只發生在縱向拍攝時使用iOS設備拍攝的圖像。不必要的失真:核心圖像過濾器正在旋轉我的圖像

下面是一個簡單的Xcode項目,具有圖像導入和CIHueAdjust過濾器: owolf.net/uploads/StackOverflow/HueAdjustProject2.zip

如果我運行與iPhone(like this one linked here)採取面向肖像的圖像上的過濾器,結果是一樣的屏幕截圖下面。

有沒有解決這個問題?謝謝閱讀。

enter image description here

回答

2

圖像有不同的取向。應用過濾器後,您將失去方向。你應該用簡單的仿射變換來補償方向。

+0

難道合適的解決方案是將原始圖像的方向屬性複製到色調調整後的? – 2012-08-17 19:20:42

+0

或者我可以忽略第一個方向信息嗎? – Mrwolfy 2012-08-18 01:26:21

+0

完成查看我在下面使用的代碼。 – Mrwolfy 2012-08-18 07:08:30

1
if ([image imageOrientation] == 3) { 
    imageView.transform = CGAffineTransformMakeRotation(M_PI/2.0); 
} else if ([image imageOrientation] == 2) { 
    imageView.transform = CGAffineTransformMakeRotation((M_PI/2.0)*-1); 
} else if ([image imageOrientation] == 1) { 
    imageView.transform = CGAffineTransformMakeRotation(M_PI);  
}else { 
    //no rotation necessary  
} 
+0

好。感謝您發佈解決方案。 – Heitara 2012-08-29 19:12:36

0

你可以使用函數UIIMage.FromImage 3個PARAMS(CIImage,規模,方向=)將圖像旋轉回原來的方向。這裏是代碼片段:

var rotatedCIImage = imageEffectFunc (src); //rotatedCIImage = your CIImage after taken effect that has been rotated 90° counter clockwise. 

if (rotatedCIImage != null) { 
    UIImage result = UIImage.FromImage(rotatedCIImage,1.0f,UIImageOrientation.Right); 
    return result; 
} else { 
    return null; 
}