2012-09-02 96 views
1

是否有任何方法可以增加位圖的寬度(或高度)而不擴展它?基本上,我有一個200x100位圖,我想通過在左邊添加50個(白色/透明)像素和在右邊50個像素添加正方形(200x200)。在不修改縱橫比的情況下更改位圖尺寸

我不想在屏幕上繪製此位圖,所以理想情況下,我應該使用「智能」方式或類似的方式使用變換矩陣,但我無法弄清楚...

回答

3

您可以嘗試這樣的事:

 // creating a dummy bitmap 
     Bitmap source = Bitmap.createBitmap(100, 200, Bitmap.Config.ARGB_8888); 
     Bitmap background; 
     Canvas canvas; 

     if(source.getHeight() == source.getWidth()) // do nothing 
      return; 

     // create a new Bitmap with the bigger side (to get a square) 
     if(source.getHeight() > source.getWidth()) { 
      background = Bitmap.createBitmap(source.getHeight(), source.getHeight(), Bitmap.Config.ARGB_8888); 
      canvas = new Canvas(background); 
      // draw the source image centered 
      canvas.drawBitmap(source, source.getHeight()/4, 0, new Paint()); 
     } else { 
      background = Bitmap.createBitmap(source.getWidth(), source.getWidth(), Bitmap.Config.ARGB_8888); 
      canvas = new Canvas(background); 
      // draw the source image centered 
      canvas.drawBitmap(source, 0, source.getWidth()/4, new Paint()); 
     } 

     source.recycle(); 
     canvas.setBitmap(null); 
     // update the source image 
     source = background; 

注:黑色邊框不是圖像的一部分。我選擇暗紅色作爲背景顏色來查看圖像的實際尺寸,並將其與黑色和源圖像的顏色(始終繪製居中)區分開來。

通過在畫布上繪製它,它不可見在屏幕上。我用一個ImageView來測試代碼。

這裏是輸出I獲得W = 200,H = 100:

enter image description here

這裏是輸出I獲得W = 100,H = 200:

enter image description here

+1

這真的很棒!我確信它可以完成。謝謝! –

相關問題