UserAvatar = FindViewById<ImageView>(Resource.Id.profilePic);
BitmapDrawable drawable = (BitmapDrawable)UserAvatar.GetDrawableState();
Bitmap bitmap = drawable.Bitmap;
MemoryStream baos = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Png, 100, baos);
byte[] bb = baos.ToArray();
String image = Base64.Encode(bb, Base64Flags.Default).ToString();
我正在尝试将imageview图像编码为base64字符串格式,但我在
中获得了强制转换异常BitmapDrawable drawable = (BitmapDrawable)UserAvatar.GetDrawableState();
请告诉我这个问题。我在c#Xamarin 中实现了这个代码
答案 0 :(得分:0)
这是因为实际上,GetDrawableState()
会返回int[]
并代表状态ID。
要从ImageView获取绘图,您应该使用GetDrawable()
Web content
答案 1 :(得分:0)
如前所述,GetDrawableState()
会返回int32[]
值。
请将图片中的以下代码引用至 Base64 转换。 它有时会帮助你。
Base64到位图:
public Bitmap Base64ToBitmap(String base64String)
{
byte[] imageAsBytes = Base64.Decode(base64String, Base64Flags.Default);
return BitmapFactory.DecodeByteArray(imageAsBytes, 0, imageAsBytes.Length);
}
Bitmap到Base64:
public String BitmapToBase64(Bitmap bitmap)
{
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.Compress(Bitmap.CompressFormat.Png, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.ToByteArray();
return Base64.EncodeToString(byteArray, Base64Flags.Default);
}