Как масштабировать растровое изображение с высоким качеством и без сбоев в Android - PullRequest
2 голосов
/ 06 октября 2011

Я загружаю изображение, используя URL, но после масштабирования происходит сбой, и масштабирование не является правильным. Это код, который я использовал,

//Code to fetch bitmap  
Bitmap bmp=HttpFetch.fetchBitmap(imageUrl);

//Scale bitmap

Bitmap myBitmap = getResizedBitmap(bmp, viewWidth, viewHeight);  

public static Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;

        int srcWidth = bm.getWidth();
        int srcHeight = bm.getHeight();

        int desiredWidth = newWidth;
        int desiredHeight = newHeight;

        int inSampleSize = 1;
        while(srcWidth / 2 > desiredWidth){
            srcWidth /= 2;
            srcHeight /= 2;
            inSampleSize *= 2;
        }

        float desiredWidthScale = (float) desiredWidth / srcWidth;
        float desiredHeightScale = (float) desiredHeight / srcHeight;

        // Decode with inSampleSize
        options.inJustDecodeBounds = false;
        options.inDither = false;
        options.inSampleSize = inSampleSize;
        options.inScaled = false;
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;

        Matrix matrix = new Matrix();
        matrix.postScale(desiredWidthScale, desiredHeightScale);
        original = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
        return original;
}

Не удалось найти код для получения BitmapFactory.Option с использованием растрового изображения и в большинстве мест, где он использует имя файла, возможно ли получить BitmapFactory.Options с использованием растрового изображения?

Просьба предложить лучшее решение для масштабирования растрового изображения при загрузке из сети.

1 Ответ

1 голос
/ 06 октября 2011
original = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);

Эта строка возвращает неизменный битмап, после вызова getResizedBitmap(), если вы пытаетесь изменить этот битмап, это может привести к падению.1006 *

Пожалуйста, посмотрите LogCat для деталей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...