Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Image.Save()引发异常;值不能为空。/r/n参数名称:编码器";_C#_.net_Image - Fatal编程技术网

C# Image.Save()引发异常;值不能为空。/r/n参数名称:编码器";

C# Image.Save()引发异常;值不能为空。/r/n参数名称:编码器";,c#,.net,image,C#,.net,Image,使用RawFormat保存位图图像时出现“值不能为空。\r\n参数名称:编码器”错误。 示例代码: class Program { static void Main(string[] args) { try { var image = new System.Drawing.Bitmap(500, 400); var stream = new MemoryStream(); im

使用RawFormat保存位图图像时出现“值不能为空。\r\n参数名称:编码器”错误。 示例代码:

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());
        }
    }
}
RawFormat在现有的ImageEncoder列表中不存在,因为下面的代码返回null

var imageCodecInfo=imageCodecInfo.GetImageEncoders().FirstOrDefault(codec=>codec.FormatID==image.RawFormat.Guid)

注意:图像可以是任何类型(JPEG、BMP、PNG)等。image.Save()应适用于image.RawFormat。 RawFormat不是位图类型。如果将image.RawFormat更改为ImageFormat.Bmp,则保存操作将成功

参考下面的链接,但没有找到使其独立于图像类型的内容


欢迎任何建议。

如果您从磁盘加载图像,可以使用
image.RawFormat
以原始格式保存该图像。但是,没有与内存中位图(这是您在本示例应用程序中创建的)关联的编码器,因此您必须自己指定图像格式(即,
ImageFormat.Bmp
)。

您可以使用它,它将被修复:

image.Save(stream,ImageFormat.Jpeg);

在System.Drawing.Image.Save(Stream,ImageCodeInfo编码器,EncoderParameters encoderParams)的CodeEval.Program.Main(String[]args)的System.Drawing.Image.Save(Stream,ImageFormat format)中包含堆栈跟踪是很有用的在d:\temp\Program.cs:19行中,我使用位图只是为了表示,图像可以是任何类型。另外,值得一提的是,内存中的位图的图像格式为
ImageFormat.MemoryBmp