如何将图像转换为xamarin.android中的base64?
我有这个代码,它在android studio中工作得很好,但在xamarin bitmap.Compress()在xamarin中有不同的参数 ,我很困惑如何在xamarin.android中将图像转换为base64或二进制?
我在第3行收到错误:
(bitmap.Compress()有一些无效的参数)。
Bitmap bitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.ace1); ByteArrayOutputStream bao = new ByteArrayOutputStream(); bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100,bao); byte[] ba = bao.ToByteArray(); string bal = Base64.EncodeToString(ba, Base64.Default);
如果您查看Xamarin中Bitmap.Compress
的文档 ,您会看到最后一个参数是Stream
。
.NET中ByteArrayOutputStream
的等价物是MemoryStream
,因此您的代码将是:
Bitmap bitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.ace1); MemoryStream stream = new MemoryStream(); bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, stream); byte[] ba = stream.ToArray(); string bal = Base64.EncodeToString(ba, Base64.Default);
(如果你愿意,也可以使用Convert.ToBase64String
而不是Base64.EncodeToString
。)
这就是我为我的Bitmap
对象获取Byte[]
的方法:
Byte[] imageArray = null; Bitmap selectedProfilePic = this.GetProfilePicBitmap (); if (selectedProfilePic != null) { using (var ms = new System.IO.MemoryStream ()) { selectedProfilePic.Compress (Bitmap.CompressFormat.Png, 0, ms); imageArray = ms.ToArray (); } }
希望这可以帮助。