C#如何从字节数组中获取图像(blob转换为字节数组)?

时间:2017-11-06 12:53:42

标签: c# .net image bitmap compression

我们正在将图片从Android应用程序保存到MySQL blob。现在我们想用C#获取该图像。有谁能建议C#的等效代码?我们想要显示原始图像。我已成功从数据库中检索数据。它返回了我的字节数组。我尝试了很多方法,但我得到的图像体积小,质量低

public String getStringImage(Bitmap bmp){
   ByteArrayOutputStream baos=new ByteArrayOutputStream();
   bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
   byte[] imageBytes= baos.toByteArray();
   String encodedImage= Base64.encodeToString(imageBytes, Base64.DEFAULT)
   return encodedImage;
}

我试过下面的代码 C#代码

byte[] dbBytes = (byte[])dtCameraImage.Rows[0]["Image"];

                if (dbBytes.Length > 0)
                {
                    string s_unicode2 = System.Text.Encoding.UTF8.GetString(dbBytes);

                    byte[] bytes = Convert.FromBase64String(s_unicode2);

                    if (bytes.Length > 0)
                    {
                        using (var ms = new MemoryStream(bytes))
                        {
                            img = new Bitmap(ms);
                            //img.Save("C:\\Newfolder\\test2.jpg");
                            imgImagePopup.Source = ConvertToImgSource(img);
                        }
                    } 
                }

1 个答案:

答案 0 :(得分:0)

[编辑] 使用JPEG格式的PNG。 使用JPEG时,原始BMP图像将丢失。见Fildors评论。

在C#中执行此操作:

  • 从数据库中获取数据
  • 颠倒你在C#
  • 中用Java做的步骤
  • 保存或显示图像

您通常不需要将图像“解压缩”回BMP。

[EDIT2] 你试过Image.FromStream了吗? https://msdn.microsoft.com/de-de/library/1kcb3wy4(v=vs.110).aspx