как @kdeogharkar указывая, ваш код выглядит хорошо.
Сначала проверьте, есть ли у вас правильный путь к файлу. Затем проверьте, требуется ли вам разрешение при доступе к внешнему файлу.
Для обработки OOM в то время как мы загрузке большого масштаба изображения, мы можем использовать:
File sd = Environment.getExternalStorageDirectory();
File image = new File(sd+filePath, imageName);
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(),bmOptions);
bitmap = Bitmap.createScaledBitmap(bitmap,parent.getWidth(),parent.getHeight(),true);
Затем с помощью следующей декодирования и кодирования метод:
public static String encodeToBase64(Bitmap image, Bitmap.CompressFormat compressFormat, int quality)
{
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
image.compress(compressFormat, quality, byteArrayOS);
return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.DEFAULT);
}
public static Bitmap decodeBase64(String input)
{
byte[] decodedBytes = Base64.decode(input, 0);
return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
}
Пример использования:
String myBase64Image = encodeToBase64(myBitmap, Bitmap.CompressFormat.JPEG, 100);
Bitmap myBitmapAgain = decodeBase64(myBase64Image);
ПРИМЕЧАНИЕ
этот ответ смешивается с:
- https://stackoverflow.com/a/28351881/4758255
- https://stackoverflow.com/a/9768973/4758255
проверить, что вы даете правильный путь для изображения, иначе код выглядит хорошо. – KDeogharkar
путь к изображению прав, я проверил его. Я не знаю, что не так. – Ofek
Вы можете подпаять 'Base64.NO_PADDING' вместо/orred в' DEFAULT', то есть без конечных '=' s. –