изменить разрешение растрового изображения в приложении Android - PullRequest
2 голосов
/ 31 марта 2012

Я пишу приложение, которое использует камеру телефона, чтобы сделать снимок, а затем использую его в своем приложении.Дело в том, что приложению не хватает памяти, и это, вероятно, из-за высокого разрешения растрового изображения.Есть ли способ сохранить растровое изображение в том же размере, но уменьшить разрешение?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 12 августа 2015

из ответа jeet.chanchawat: https://stackoverflow.com/a/10703256/3027225

  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);
        return resizedBitmap;
    }
4 голосов
/ 31 марта 2012

Вы можете установить его ширину и высоту

Bitmap bm = ShrinkBitmap(imagefile, 150, 150);

Функция для вызова

Bitmap ShrinkBitmap(String file, int width, int height){

 BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
    bmpFactoryOptions.inJustDecodeBounds = true;
    Bitmap bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions);

    int heightRatio = (int)Math.ceil(bmpFactoryOptions.outHeight/(float)height);
    int widthRatio = (int)Math.ceil(bmpFactoryOptions.outWidth/(float)width);

    if (heightRatio > 1 || widthRatio > 1)
    {
     if (heightRatio > widthRatio)
     {
      bmpFactoryOptions.inSampleSize = heightRatio;
     } else {
      bmpFactoryOptions.inSampleSize = widthRatio; 
     }
    }

    bmpFactoryOptions.inJustDecodeBounds = false;
    bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions);
 return bitmap;
}

}

Это еще две ссылки, которые могут вам помочь. Ссылка 1 & Ссылка 2

2 голосов
/ 08 мая 2012

это можно сделать с помощью Options.inSampleSize, при создании растрового изображения

...