2016-04-08 274 views
8

通過使用此代碼,我們可以旋轉的圖像翻轉的位圖圖像:水平或垂直

public static Bitmap RotateBitmap(Bitmap source, float angle) { 
     Matrix matrix = new Matrix(); 
     matrix.postRotate(angle); 
     return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); 
} 

但我們如何可以水平或垂直翻轉圖像?

回答

19

鑑於cx,cy是圖像的中心:

翻轉以x:

matrix.postScale(-1, 1, cx, cy); 

翻轉在Y:

matrix.postScale(1, -1, cx, cy); 
+0

你如何找到圖像的中心? –

+2

@MayurRokade'source.getWidth()/ 2f''source.getHeight()/ 2f' – weston

-1

它所有關於您使用的矩陣。要繞x軸翻轉,請使用[[-1,0],[0,1]]。對於y軸,使用[[1,0],[0,-1]]。這裏重要的是行列式的絕對值是1,所以它不會縮放。而且 - 基本上顛倒了給定軸周圍的位置。

+0

問題是,100的x變的x - 100,這需要發生在圖像的中心附近,而不是原點。 – weston

+0

然後先翻譯畫布。 –

+1

如果您的意思是將翻譯應用於矩陣,那麼您也必須隨後翻譯。即你可以翻譯(-cx/2,-cy/2),縮放,翻譯(cx/2,cy/2)'。 – weston