我從個人遠程數據庫中獲取了一個Base64字符串的位圖,( encodedImage
是表示使用Base64的圖像的字符串): android
profileImage = (ImageView)findViewById(R.id.profileImage); byte[] imageAsBytes=null; try { imageAsBytes = Base64.decode(encodedImage.getBytes()); } catch (IOException e) {e.printStackTrace();} profileImage.setImageBitmap( BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length) );
profileImage是個人ImageView 數據庫
好的,可是在將其顯示在佈局的ImageView
上以前,我必須調整其大小。 我必須將其尺寸調整爲120x120。 佈局
有人能夠告訴我代碼來調整大小嗎? post
我發現的示例沒法應用於得到的base64字符串位圖。 this
import android.graphics.Matrix public Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) { int width = bm.getWidth(); int height = bm.getHeight(); float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // CREATE A MATRIX FOR THE MANIPULATION Matrix matrix = new Matrix(); // RESIZE THE BIT MAP matrix.postScale(scaleWidth, scaleHeight); // "RECREATE" THE NEW BITMAP Bitmap resizedBitmap = Bitmap.createBitmap( bm, 0, 0, width, height, matrix, false); bm.recycle(); return resizedBitmap; }
編輯:由@aveschini建議,我添加了bm.recycle();
內存泄漏。 請注意,若是您將前一個對象用於其餘目的,請相應地進行處理。 spa
若是已經有位圖,則能夠使用如下代碼來調整大小: code
Bitmap originalBitmap = <original initialization>; Bitmap resizedBitmap = Bitmap.createScaledBitmap( originalBitmap, newWidth, newHeight, false);
profileImage.setImageBitmap( Bitmap.createScaledBitmap( BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length), 80, 80, false ) );
試試這個代碼: 對象
BitmapDrawable drawable = (BitmapDrawable) imgview.getDrawable(); Bitmap bmp = drawable.getBitmap(); Bitmap b = Bitmap.createScaledBitmap(bmp, 120, 120, false);
我但願它有用。 圖片
有人問在這種狀況下如何保持寬高比: 內存
計算用於縮放的因子,並將其用於兩個維度。 假設您但願圖片的高度爲屏幕的20%
int scaleToUse = 20; // this will be our percentage Bitmap bmp = BitmapFactory.decodeResource( context.getResources(), R.drawable.mypng); int sizeY = screenResolution.y * scaleToUse / 100; int sizeX = bmp.getWidth() * sizeY / bmp.getHeight(); Bitmap scaled = Bitmap.createScaledBitmap(bmp, sizeX, sizeY, false);
要得到屏幕分辨率,您能夠使用如下解決方案: 以像素爲單位獲取屏幕尺寸