Android-код для преобразования строки base64 в растровое изображение - PullRequest
11 голосов
/ 27 сентября 2010

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

Ответы [ 3 ]

21 голосов
/ 27 сентября 2010

Предполагая, что ваши данные изображения находятся в строке под названием 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.

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

8 голосов
/ 11 июня 2014

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

Принятый ответ неверен, по крайней мере, в 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)
);
3 голосов
/ 02 апреля 2015

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

Bitmap Base64ToBitmap(String myImageData)
    {
        byte[] imageAsBytes = Base64.decode(myImageData.getBytes(),Base64.DEFAULT);
        return BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length);
    }
...