-1
Следующий код взят из разработчиков Android, с небольшими изменениями:Android: не сворачивать растровый объект
private static int calculateInSampleSize(BitmapFactory.Options options,
int reqWidth, int reqHeight) {
// Raw height and width of image
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;
// Calculate the largest inSampleSize value that is a power of 2 and
// keeps both height and width larger than the requested height and
// width.
while ((halfHeight/inSampleSize) > reqHeight
&& (halfWidth/inSampleSize) > reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
public static Bitmap decodeSampledBitmap(Bitmap bitmap, int reqWidth,
int reqHeight) {
int size = bitmap.getRowBytes() * bitmap.getHeight();
InputStream is = new ByteArrayInputStream(new byte[size]);
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
// I set these manually because decodeStream set them to -1
options.outHeight = bitmap.getHeight();
options.outWidth = bitmap.getWidth();
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth,
reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
// can the number of rows be wrong now?
size = bitmap.getRowBytes() * options.outHeight;
is = new ByteArrayInputStream(new byte[size]);
return BitmapFactory.decodeStream(is, null, options);
}
У меня есть две проблемы:
- При чтении растровых границ в
decodeStream
, опции .outHeight и options.outWidth установлены в -1, и я не знаю, почему - Открытый метод возвращает null, когда растровое изображение берется из камеры моего устройства (следовательно, считывается из файла), но отлично работает при растровом изображении взято из образа t шляпа уже существует на моем телефоне (выбран из галереи).
Любые идеи, в которых может возникнуть проблема? благодаря!
Ваш каталог содержит изображения? – QuokMoon
как вы ожидаете, что BitmapFactory расшифрует 'is', так как в нем ничего нет? ('new byte [size]' довольно пуст ...) – njzk2
использовать http://developer.android.com/reference/android/graphics/Bitmap.html createScaledBitmap – njzk2