2016-04-08 21 views
8

biz bir görüntüyü döndürebilirsiniz Bu kodu kullanarak bir Bitmap görüntüsünü çevirin:yatay veya dikey

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

Ama nasıl yatay veya dikey bir görüntü çevirebilirsiniz?

cevap

19

görüntü merkezi

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

Görüntünün merkezini nasıl buluyorsunuz? –

+2

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

-1

Kullandığınız tüm matris hakkında. X ekseni etrafında çevirmek için [[-1,0], [0, 1]] tuşlarını kullanın. Y eksenleri için [[1,0], [0, -1]] kullanın. Burada önemli olan, determinantın mutlak değerinin 1 olmasıdır, bu yüzden ölçeklenmeyecektir. Ve - temelde verilen eksenler etrafındaki konumu tersine çevirir. x

Ayaklı:

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

Kapak y: cx,cy Verilen

+0

sorun olan, 100 x bir x olur - 100, bunun orjinin merkezi etrafında değil, görüntünün merkezi etrafında gerçekleşmesi gerekiyor. – weston

+0

Ardından tuvali önce çevirin. –

+1

Matrise çeviri yapmak istediğinizde, daha sonra da çevirmelisiniz. yani çevirebilirsin (-cx/2, -cy/2), ölçeklendir, çevir (cx/2, cy/2) '. – weston