如何在Android中調整位圖的大小?

我從個人遠程數據庫中獲取了一個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


#1樓

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


#2樓

若是已經有位圖,則能夠使用如下代碼來調整大小: code

Bitmap originalBitmap = <original initialization>;
Bitmap resizedBitmap = Bitmap.createScaledBitmap(
    originalBitmap, newWidth, newHeight, false);

#3樓

profileImage.setImageBitmap(
    Bitmap.createScaledBitmap(
        BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length), 
        80, 80, false
    )
);

#4樓

試試這個代碼: 對象

BitmapDrawable drawable = (BitmapDrawable) imgview.getDrawable();
Bitmap bmp = drawable.getBitmap();
Bitmap b = Bitmap.createScaledBitmap(bmp, 120, 120, false);

我但願它有用。 圖片


#5樓

有人問在這種狀況下如何保持寬高比: 內存

計算用於縮放的因子,並將其用於兩個維度。 假設您但願圖片的高度爲屏幕的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);

要得到屏幕分辨率,您能夠使用如下解決方案: 以像素爲單位獲取屏幕尺寸

相關文章
相關標籤/搜索