我在使用RawFormat保存位图图像时收到"值不能为空.\ r \nParameter name:encoder"错误.示例代码:
class Program
{
static void Main(string[] args)
{
try
{
var image = new System.Drawing.Bitmap(500, 400);
var stream = new MemoryStream();
image.Save(stream, image.RawFormat);
}
catch (Exception exp)
{
Console.WriteLine(exp.ToString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
现有的ImageEncoders列表中不存在RawFormat,因为下面的代码返回null.
var imageCodecInfo = ImageCodecInfo.GetImageEncoders().FirstOrDefault(codec => codec.FormatID == image.RawFormat.Guid);
注意:图像可以是任何类型(JPEG,BMP,PNG)等.Image.Save()应该在image.RawFormat上工作.RawFormat不是Bitmap类型.如果我将image.RawFormat更改为ImageFormat.Bmp,则保存操作会成功.
参考下面的链接,但没有找到任何使其独立于图像类型.
Image.Save崩溃:{"值不能为空.\ r \nParameter name:encoder"} 为什么Image.Save(Stream,ImageFormat)会抛出异常?
欢迎任何建议.
可能重复:
System.Drawing.Image流C#
如何将System.Drawing.Image转换为流?
有没有办法将System.Drawing.Image附加到电子邮件而不保存它,然后从保存的路径中抓取它.
现在我正在创建图像并保存它.然后我发送电子邮件:
MailMessage mail = new MailMessage();
string _body = "body"
mail.Body = _body;
string _attacmentPath;
if (iP.Contains(":"))
_attacmentPath = (@"path1");//, System.Net.Mime.MediaTypeNames.Application.Octet));
else
_attacmentPath = @"path2");
mail.Attachments.Add(new Attachment(_attacmentPath, System.Net.Mime.MediaTypeNames.Application.Octet));
mail.To.Add(_imageInfo.VendorEmail);
mail.Subject = "Rouses' PO # " + _imageInfo.PONumber.Trim();
mail.From = _imageInfo.VendorNum == 691 ? new MailAddress("email", "") : new MailAddress("email", "");
SmtpClient server = null;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.Normal;
server = new SmtpClient("server");
try
{
server.Send(mail);
}
catch
{
}
Run Code Online (Sandbox Code Playgroud)
无论如何直接将System.Drawing.Image传递给mail.Attachments.Add()?
我正在使用C#作为我的项目,任何人都可以告诉我什么是HTTP POST Requset的standered结构.如何在代码请求中附加像文件一样的POST数据.
我只想从我的代码本身创建一个POST请求,并发布不同的项目.
我已经检查了Ietf的RFC for http POST,但它太长了......