2016-04-08 41 views
8

Za pomocą tego kodu możemy obrócić obraz:Przerzucanie bitmapy poziomo lub pionowo

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

Ale jak możemy odwrócić obraz w pionie lub poziomie?

Odpowiedz

19

względu cx,cy jest centrum obrazu:

Klapki X:

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

Klapki Y:

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

jak znaleźć środek obrazu? –

+2

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

-1

Wszystko na temat macierzy, z której korzystasz. Aby odwrócić go wokół osi x, użyj [[-1,0], [0, 1]]. Dla osi y użyj [[1,0], [0, -1]]. Ważną rzeczą tutaj jest to, że bezwzględna wartość wyznacznika wynosi 1, więc nie będzie skali. I - zasadniczo odwraca położenie wokół danych osi.

+0

Problem, X-100 staje się X - 100, to musi się zdarzyć wokół środka obrazu, a nie pochodzenia. – weston

+0

Najpierw przetłumaczyć płótno. –

+1

Jeśli masz na myśli zastosowanie tłumaczenia na matrycę, to musisz także później przetłumaczyć. tzn. można "przetłumaczyć (-cx/2, -cy/2), skalować, tłumaczyć (cx/2, cy/2)". – weston