Android-код для преобразования строки base64 в растровое изображение

Привет команда stackoverflow У меня есть проблема в преобразовании строки base64 в растровое изображение в Android. Я использую камеру для получения изображения, и я конвертирую изображение в строку base64 для отправки на сервер. Я хочу показать это изображение в режиме просмотра изображений, так как я могу показать изображение в ImageView после получения изображения с камеры. Пожалуйста, помогите мне решить проблему.

 Tseng27 сент. 2010 г., 20:56
Просто для лучшего понимания: зачем вам сначала кодировать изображение в base64, а затем отправлять декодировать, чтобы снова отобразить его в ImageView? Не проще ли сначала получить его, отобразить в ImageView и затем зашифровать в base64, чтобы отправить на сервер? ^^

Ответы на вопрос(3)

Решение Вопроса

Предполагая, что ваши данные изображения находятся в строке с именем myImageData, следующее должно помочь:

    byte[] imageAsBytes = Base64.decode(myImageData.getBytes(), Base64.DEFAULT);
    ImageView image = (ImageView)this.findViewById(R.id.ImageView);
    image.setImageBitmap(
            BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
    );

Для декодирования Base64 вы можете использоватьhttp://iharder.sourceforge.net/current/java/base64/ Android не поддерживает Base64 до версии 2.2.

Обратите внимание, я на самом деле не запускал этот код, поэтому вам придется перепроверить ошибки.

 Shajeel Afzal04 апр. 2015 г., 11:12
В моем случае:byte[] imageBitmap = Base64.decode(mEncodedImageData, Base64.DEFAULT);
 pfrank20 дек. 2013 г., 08:30
Будет ли это работать и для png с кодировкой base64?

РЕДАКТИРОВАТЬ: Принятый пост был обновлен, чтобы скопировать мой ответ ниже, либо являются правильными

Принятый ответ неверен, по крайней мере, в JellyBean, KitKat или Lollipop. Вы должны использовать следующее, которое работает для изображений JPEG, PNG или GIF.

byte[] imageAsBytes = Base64.decode(myImageData.getBytes(), Base64.DEFAULT);
ImageView image = (ImageView)this.findViewById(R.id.ImageView);
image.setImageBitmap(
        BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);
 AshesToAshes09 авг. 2015 г., 10:13
Тур - это не тот же код, что и ТуомасР (который является принятым ответом)?
 Apqu13 авг. 2015 г., 14:45
@AshesToAshes Теперь они обновили свой ответ, чтобы скопировать мой (stackoverflow.com/posts/3801881/revisions)

Запишите простой метод, передайте Base64 String, и он вернет объект Bitmap

Bitmap Base64ToBitmap(String myImageData)
    {
        byte[] imageAsBytes = Base64.decode(myImageData.getBytes(),Base64.DEFAULT);
        return BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length);
    }
 Kartiikeya01 нояб. 2016 г., 10:47
Это сработало для меня. Вы можете объяснить это преобразование теоретически ??

Ваш ответ на вопрос