c# – 未找到适合完成此操作的成像组件

这是我的一段代码,但我有一个错误

No imaging component suitable to complete this operation was found

在“EndInit()”行中.

我已经阅读了WIC注册表修改(注意:我的操作系统是Windows 7,我的IDE是VS 2010),但它根本不起作用:(

我想知道你是否让我知道如何解决它.

BitmapImage myBitmapImage = new BitmapImage();


byte[] DM = new byte[307200];

for (int i = 0; i < 640; i++)
    for (int j = 0; j < 480; j++)
        if (i < 500)
            DM[i + j] = i;

using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(DM))
{
    myBitmapImage.BeginInit();
    myBitmapImage.StreamSource = memoryStream;
    myBitmapImage.DecodePixelWidth = 640;
    myBitmapImage.EndInit();

}

img.Source = myBitmapImage;

解决方法:

好吧,你不能只传递一个像素数据数组;课堂上没有办法知道图像的长度和高度,通道和颜色深度.您需要为支持的格式提供有效的标头,例如bmp,jpg或png.还有其他一些,MSDN上的某个列表存在.

由于您想要从头开始创建位图,因此您可能希望使用WritableBitmap.

(顺便说一句,DecodePixelWidth不是你想象的那样;它只是在解码后缩小图片以节省内存)

上一篇:c#-EPPlus无法访问封闭的流


下一篇:C# 将网络图片URL转成BASE64