小编dme*_*lio的帖子

将位图保存到MemoryStream时,GDI +中发生了一般错误

我有一些代码可以在几台机器上完美运行(开发,QA,UAT).不幸的是,在生产中我得到"GDI +中出现了一般错误" bmp.Save(ms, ImageFormat.Png);因此,我假设你无法重现问题,但也许有人可以发现我的错误.

一些注释,我已经搜索了很多常见的解决方案,请注意这是保存到一个MemoryStream所以大多数人建议不适用的文件权限问题,"bmp在打开时锁定"解决方案也是如此,因为我,'我在别的地方写作.最后,这不是因为png需要可搜索的流,因为它MemoryStream是可搜索的.

请注意,如果我将其更改为ImageFormat.Jpeg工作正常.我只对PNG有问题.我发现HKEY_CLASSES_ROOT\CLSID\{FAE3D380-FEA4-4623-8C75-C6B61110B681}由于权限,提到注册表项可能是问题所在.因此,我设置密钥以允许Everyone对此密钥具有读取访问权限,无需更改.

public static MemoryStream GenerateImage(string text)
{
    MemoryStream ms = new MemoryStream();
    using (Bitmap bmp = new Bitmap(400,400))
    {
        bmp.Save(ms, ImageFormat.Png);
        ms.Position = 0;
    }
    return ms;
}
Run Code Online (Sandbox Code Playgroud)

这是完整的堆栈跟踪:

[ExternalException(0x80004005):GDI +中发生一般错误.]
System.Drawing.Image.Save(Stream stream,ImageCodecInfo encoder,EncoderParameters encoderParams)+616457
WP.Tools.Img.GenerateImage(String text)+383

注意:我的问题已经列举了拟议副本中的解决方案.没有问题.如果它们也会因JPEG而失败.

c# gdi+

10
推荐指数
1
解决办法
2065
查看次数

标签 统计

c# ×1

gdi+ ×1