提问者:小点点

值不能为空。参数名称:位图转换C#中的编码器


为了将位图转换为base64,我必须将位图转换为图像。当我将图像转换为img.save(ms,img.rawformat)的memorystream;时,在从屏幕拍摄位图(如Image img=(Image)bitmap;Image img=bitmap as Image)转换图像后,我会得到这条消息,但当我使用本地存储的图像(如Image.Image.fromfile(路径))时,它工作得很好。当我不想存储屏幕截图并每次都读一遍这是我尝试过的代码时,我该如何避免这个错误呢

  Image img = bitmap as Image;
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, img.RawFormat);
string base64 = Convert.ToBase64String(ms.ToArray());
}

共1个答案

匿名用户

实际上,您不必将bitmab转换为image,而您可以直接使用base64对您的bitmab进行编码

试试看:

using (MemoryStream ms = new MemoryStream())
{
     bitmab.Save(ms, ImageFormat.Jpeg); // you can change your image format as you want
     byte[] imageBytes = ms.ToArray();
     string base64 = Convert.ToBase64String(imageBytes);
}