我在使用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)会抛出异常?
欢迎任何建议.
C.E*_*uis 48
如果从磁盘加载图像,则可以使用image.RawFormat
其原始格式保存该图像.但是,没有与内存中位图相关联的编码器(这是您在此示例应用程序中创建的),因此您必须自己指定图像格式(即.ImageFormat.Bmp
).
归档时间: |
|
查看次数: |
15340 次 |
最近记录: |