2012-06-05 110 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-in-place-no-extra-memory – Shrikant

+0

添加你如何定義矩陣的代碼 –

+0

'Matrix matrix = new Matrix(); matrix.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參考。 – jhondge

+0

我不知道爲什麼這很重要,如果你創建一個自定義的類來保存位圖並保持對類的引用,它會工作嗎? –