У меня уже есть растровое изображение -
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = calculateInSampleSize(options, 200, 300) ;
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(getIntent().getData()), null, options);
mImageView.setImageBitmap(bitmap);
У меня также есть функция для вычисления inSampleSize, которую я нашел в документах для Android здесь -
public static int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight) {
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int halfHeight = height / 2;
final int halfWidth = width / 2;
while ((halfHeight / inSampleSize) >= reqHeight
&& (halfWidth / inSampleSize) >= reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
Мои вопросы -
reqWidth и reqHeight являются значениями в пикселях или dp?
Какими должны быть значения reqWidth и reqHeight, чтобы бытьпередается в функцию calcInSampleSize (...)?Независимо от того, что я передаю, он всегда возвращает 1.
Я хочу уменьшить размер растрового изображения в КБ / МБ до уровня, на котором качество остается хорошим на каждом устройстве.