Android 2.2 SDK - изменение размера растрового изображения nullPointerException

1

Я загружаю изображения из URLS, которые имеют разные размеры. Похоже, что более мелкие из них проходят, а nullPointerException (отображается в Log.d ниже) появляется для более крупных. Как я могу изменить эти изображения?

                BitmapDrawable drawable = null;
                Bitmap bitmap = null;
                try {
                    bitmap = loadBitmapFromWeb(url);
                    System.out.println("url " + url);
                } catch (IOException e) {
                }

                int width = 150;
                int height = 150;
                try {
                    drawable = resizeImage(bitmap, height, width);
                } catch (Exception e) {
                    Log.d("exception image", e.toString());
                    drawable = getDrawableFromResource(R.drawable.default_backup);
                }

Это то, что я использую для загрузки с URL-адреса:

    public static Bitmap loadBitmapFromWeb(String url) throws IOException {
        InputStream is = (InputStream) new URL(url).getContent();
        Bitmap bitmap = BitmapFactory.decodeStream(is);

        return bitmap;
    }

Это то, что я использую для изменения размера, где появляется ошибка:

    public static BitmapDrawable resizeImage(Bitmap bitmap, int w, int h) {

        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        int newWidth = w;
        int newHeight = h;

        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;

        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);

        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height,
                matrix, true);

        return new BitmapDrawable(resizedBitmap);
    }
  • 0
    Вы можете быть более конкретным? Где ваш NPE брошен? Номер строчки? Какая строка кода?
Теги:
mobile
bitmap
android-2.2-froyo

1 ответ

3

Почему бы вам не использовать доступную функцию Bitmap для изменения размера. Предположим, что вы загрузили правильное изображение, вам просто нужно сделать следующее:

    Bitmap scaledImage = Bitmap.createScaledBitmap(originalImage, newWidth, newHeight, false);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню