1
是否有任何方法可以增加位圖的寬度(或高度)而不擴展它?基本上,我有一個200x100位圖,我想通過在左邊添加50個(白色/透明)像素和在右邊50個像素添加正方形(200x200)。在不修改縱橫比的情況下更改位圖尺寸
我不想在屏幕上繪製此位圖,所以理想情況下,我應該使用「智能」方式或類似的方式使用變換矩陣,但我無法弄清楚...
是否有任何方法可以增加位圖的寬度(或高度)而不擴展它?基本上,我有一個200x100位圖,我想通過在左邊添加50個(白色/透明)像素和在右邊50個像素添加正方形(200x200)。在不修改縱橫比的情況下更改位圖尺寸
我不想在屏幕上繪製此位圖,所以理想情況下,我應該使用「智能」方式或類似的方式使用變換矩陣,但我無法弄清楚...
您可以嘗試這樣的事:
// 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:
這裏是輸出I獲得W = 100,H = 200:
這真的很棒!我確信它可以完成。謝謝! –