2012-06-05 5 views
0

Android에서 비트 맵을 90도 회전하고 싶습니다. 그리고 저는 새로운 인스턴스를 얻고 싶지 않습니다. 이 문제를 해결할 방법이 있습니까? 아이디어가 있습니다 : 그냥 비트 맵의 ​​픽셀을 회전하십시오. 그러나 나는 그것을 할 수 없다.비트 맵의 ​​픽셀을 회전하는 방법

temp = Bitmap.createBitmap(temp, 0, 0, w, h, matrix, false);

+1

: http://stackoverflow.com/questions/2968397/algorithm-to-rotate-an- image-90-degrees-in-place-no-extra-memory – Shrikant

+0

매트릭스를 정의하는 방법에 대한 코드 추가 –

+0

'매트릭스 매트릭스 = new 매트릭스 (매트릭스) .setRotate (90);' – jhondge

답변

1

이 작동 :

http://warting.github.com/AndroidBitmapRotate/

대답이 링크에
public class RotateBitmapActivity extends Activity { 

    ImageView iv; 
    private Bitmap bitmap; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
     iv = (ImageView) findViewById(R.id.ImageView01); 

     findViewById(R.id.left).setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       rotate(-90F); 
      } 
     }); 

     findViewById(R.id.right).setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       rotate(90F); 
      } 
     }); 
    } 

    private void rotate(float degrees) { 

     Matrix rotateMatrix = new Matrix(); 
     rotateMatrix.postRotate(degrees); 

     bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), rotateMatrix, true); 
     iv.setImageBitmap(bitmap); 
    } 
} 
+0

대답 해줘. 비트 맵을 샘에게 보내고 싶다. e 인스턴스. 당신의 해상도는 두가지 다른 인스턴스를 가질 것입니다. 나는 imageview refrence를 가질 수 없습니다. – jhondge

+0

왜 중요한지 모르겠다. 비트 맵을 보유하고 대신 클래스에 대한 참조를 유지하는 사용자 정의 클래스를 만드는 경우 작동하겠습니까? –

관련 문제