Изображение Base64 не отображается в режиме просмотра изображений Android - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь показать изображение base64 в режиме просмотра изображений, но оно не отображается.Я декодирую и setiing растровое изображение изображения.Я динамически добавляю изображения.Проблема в том, что Iam добавляет изображения динамически?Ниже приведен фрагмент кода:

LayoutInflater inflaterDocuments = (LayoutInflater)GetSystemService(Context.LayoutInflaterService);
View inflatedHeaderLayout = inflaterDocuments.Inflate(Resource.Layout.imageListItem, null, false);
ImageView imageView = inflatedHeaderLayout.FindViewById<ImageView>(Resource.Id.imageView);
byte[] decodedString = Base64.Decode(base64String, Base64Flags.Default);
Bitmap bitMap = BitmapFactory.DecodeByteArray(decodedString, 0, decodedString.Length);
imageView.SetImageBitmap(bitMap);
imageView.Invalidate();
_imageLayout.AddView(inflatedHeaderLayout);

Редактировать

Файл строки Base64 Base64.txt

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Это метод для получения base64

public static String getBase64String(Bitmap image) {
    String encodeString = null;
    try {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
        byte[] byteArray = byteArrayOutputStream.toByteArray();
        encodeString = Base64.encodeToString(byteArray, Base64.DEFAULT);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return encodeString;
}

Использование Glide для шоу Image

String photoId = base64;
    Glide.with(getApplicationContext())
            .load(photoId)
            .apply(RequestOptions.circleCropTransform())
            .into(employeeImage);
0 голосов
/ 30 января 2019

Создать метод для преобразования Base64 в Bitmap

public Bitmap BaseStringToBitmap(string imageBase64)
{
    byte[] imageBytes = Convert.FromBase64String(imageBase64);
    return BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
}

Чем использовать его на ImageView объекте

imageView.SetImageBitmap(BaseStringToBitmap(base64String));

Пример кода

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.activity_main);
    var iv = FindViewById<Android.Widget.ImageView>(Resource.Id.image1);
    iv.SetImageBitmap(BaseStringToBitmap());
}   
public Bitmap BaseStringToBitmap()
{
    var bse64 = "/9j/4ZT8RXhpZgAASUkqAAgAAAARAA4BAgAgAAAA2gAAAA8BAgAgAAAA...";
    byte[] imageBytes = Convert.FromBase64String(bse64);
    return BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
}

Axml файл

<ImageView
android:id="@+id/image1"
android:background="#89CFF0"    
android:layout_width="200dp" 
android:layout_height="200dp"/>

Снимок экрана вывода

enter image description here

...