Как изменить размер растрового изображения в Android? - PullRequest
301 голосов
/ 29 января 2011

У меня есть битмап, взятый из строки Base64 из моей удаленной базы данных, (encodedImage - это строка, представляющая изображение с Base64):

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.

Может кто-нибудь сказать мне код, чтобы изменить его размер?

Приведенные мною примеры не могут быть применены к полученному растровому файлу base64.

Ответы [ 13 ]

3 голосов
/ 07 апреля 2014
profileImage.setImageBitmap(
    Bitmap.createScaledBitmap(
        BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length), 
        80, 80, false
    )
);
2 голосов
/ 20 июля 2016

Размер растрового изображения на основе любого размера дисплея

public Bitmap bitmapResize(Bitmap imageBitmap) {

    Bitmap bitmap = imageBitmap;
    float heightbmp = bitmap.getHeight();
    float widthbmp = bitmap.getWidth();

    // Get Screen width
    DisplayMetrics displaymetrics = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    float height = displaymetrics.heightPixels / 3;
    float width = displaymetrics.widthPixels / 3;

    int convertHeight = (int) hight, convertWidth = (int) width;

    // higher
    if (heightbmp > height) {
        convertHeight = (int) height - 20;
        bitmap = Bitmap.createScaledBitmap(bitmap, convertWidth,
                convertHighet, true);
    }

    // wider
    if (widthbmp > width) {
        convertWidth = (int) width - 20;
        bitmap = Bitmap.createScaledBitmap(bitmap, convertWidth,
                convertHeight, true);
    }

    return bitmap;
}
1 голос
/ 25 января 2016

Начиная с API 19, существуют битовые карты setWidth (int width) и setHeight (int height).http://developer.android.com/reference/android/graphics/Bitmap.html

...