Я создаю приложение для обработки изображений и также возвратил ноль при попытке этих методов. Моя консоль вернула не ошибку, а оператор восстановления, подобный этому
D / skia: --- декодер-> декодер вернул false
Вот то, что я обнаружил, которое будет загружать любое растровое изображение в моем приложении
1) правильное имя файла с соответствующими разрешениями
2) Уменьшить изображение при необходимости
3) Если вам нужно большое изображение, установите его под манифестом так:
<application
android:largeHeap="true"
</application>
Использование большой кучи не является заменой для отображения правильного размера изображения. Вот пример кода, который я использую непосредственно из документов для Android
public Bitmap getRawImageThumb(Context mContext)
{
Bitmap b = null;
int reqHeight = 100, reqWidth = 100;
String filename = mContext.getFilesDir().toString() + "/" + rawFileName;
Log.d(TAG, "processRawReceipt: " + rawFileName);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
//options.inPreferredConfig = Bitmap.Config.ARGB_8888;
BitmapFactory.decodeFile(filename, options);
int height = options.outHeight;
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;
}
}
options.inSampleSize = inSampleSize;
options.inJustDecodeBounds = false;
Log.d(TAG, "getRawImage: " + String.valueOf(height) + " " + String.valueOf(width) + " " + String.valueOf(inSampleSize));
b = BitmapFactory.decodeFile(filename, options);
return b;
}