在Xamarin中使用C#的字节数组到映像

时间:2018-04-08 18:25:50

标签: c# xamarin xamarin.android

过去几天我一直在搜索,但没有找到解决问题的方法。我目前正在开发一款xamarin Android应用。我想通过使用数据库中的字节数组列来显示图像。我正在使用另一个程序来查找特定照片的字节数组,之后我将其值插入到我的主项目的字节数组列中。

这是我尝试重现图像的代码:

Android.Graphics.Bitmap bitmap=BitmapFactory.DecodeByteArray(currentexercis.image, 0, currentexercis.image.Length);
viewHolder.exercis_photo.SetImageBitmap(bitmap);

Currentexercis.image表示我的数据库中的字节数组,它的值似乎没问题,但每次位图都为空。

这是我的其他程序中的代码,我将图像转换为bytearray:

Image img = Image.FromFile(opendlg.FileName);
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
dbpicEntities1 db = new dbpicEntities1();
db.MyPictures.Add(new MyPicture() { FileName=fileName, Data = ms.ToArray() });
db.SaveChanges();
MessageBox.Show("success");

3 个答案:

答案 0 :(得分:1)

我认为你应该这样使用。

byte [] imageArray // is your data
MemoryStream mStream = new MemorySteram ();
mStream.write(imageArray,0,imageArray.Length);
Image img = Image.FromStream(mStream);
img.save(filelocation);

Bitmap bitmapimg = BitmapFactory.BitmapFactory.DecodeStream(mStream); 
// if you want to use Bitmap

答案 1 :(得分:0)

  

在Xamarin中使用C#的字节数组到图像

有一些第三方库可以很好地实现此功能,例如PicassoGlide

对于Glide,有一份官方文档显示了如何在Xamarin.Android项目中使用它:Binding a .JAR。 或者您可以直接从nuget包中使用它:

enter image description here

然后你可以这样编码:

Glide.With(context)
     .Load(imageBytes)
     .Apply(RequestOptions.CircleCropTransform())
     .Into(imageView);

答案 2 :(得分:0)

转换为byteArray

 private void OnGetMemberAvatarCompleted(byte[] avatarBytes)
{
   var avatarImageView = FindViewById<ImageView>(Resource.Id.memberProfile_avatar);
   if (avatarImageView != null)
   {
      var imageBitmap = BitmapFactory.DecodeByteArray(avatarBytes, 0,avatarBytes.Length);
      RunOnUiThread(() => avatarImageView.SetImageBitmap(imageBitmap));
   }
}

将字节数组转换为位图

{{1}}