android imageview 中未显示 Base64 图像
Base64 image not displayed in android imageview
我试图在图像视图中显示 base64 图像,但它没有显示。我正在解码和设置图像视图的图像位图。
我正在动态添加图像视图。问题是因为我正在动态添加图像吗?
下面是代码片段:
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
创建将 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);
}
一个xml文件
<ImageView
android:id="@+id/image1"
android:background="#89CFF0"
android:layout_width="200dp"
android:layout_height="200dp"/>
输出截图
这是获取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 用于展示图片
String photoId = base64;
Glide.with(getApplicationContext())
.load(photoId)
.apply(RequestOptions.circleCropTransform())
.into(employeeImage);
我试图在图像视图中显示 base64 图像,但它没有显示。我正在解码和设置图像视图的图像位图。 我正在动态添加图像视图。问题是因为我正在动态添加图像吗? 下面是代码片段:
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
创建将 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);
}
一个xml文件
<ImageView
android:id="@+id/image1"
android:background="#89CFF0"
android:layout_width="200dp"
android:layout_height="200dp"/>
输出截图
这是获取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 用于展示图片
String photoId = base64;
Glide.with(getApplicationContext())
.load(photoId)
.apply(RequestOptions.circleCropTransform())
.into(employeeImage);