相关疑难解决方法(0)

将MemoryStream保存并加载到文件中

我正在将结构序列化为a MemoryStream,我想保存并加载序列化结构.

那么,如何将MemoryStream文件保存到文件中并将其从文件中加载回来?

c# io memorystream file stream

264
推荐指数
7
解决办法
54万
查看次数

如何在保存图像时找到Generic GDI +错误的原因?

拥有一个在加载和存储图像时可以使用多年的代码,我发现我有一个图像打破了这段代码:

const string i1Path = @"c:\my\i1.jpg";
const string i2Path = @"c:\my\i2.jpg";

var i = Image.FromFile(i1Path);
i.Save(i2Path, ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)

例外是:

发生了System.Runtime.InteropServices.ExternalException

GDI +中发生了一般错误.

at System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)
at System.Drawing.Image.Save(String filename,ImageFormat format)
at ...

据我所知,图像没什么特别之处.它的大小约为250像素,可以在Windows Image Viewer或Paint.NET中打开:

在此输入图像描述

(由于上面的图片,上传到Stack Overflow后不再产生错误,我把原始图像放在这里)

我发现在调用Save方法时,目标图像文件是用零字节创建的.

我真的对导致错误的原因一无所知.

我的问题:

  • 你能想到任何阻碍.NET保存图像的特殊事物吗?
  • 有没有办法(除了惊慌失措)缩小这些错误?

.net c# system.drawing gdi+ image

29
推荐指数
4
解决办法
8万
查看次数

System.Drawing.Image.Save中的GDI +发生了一般错误

例外:

GDI +中发生了一般错误.System.Drawing.Image.Save(String filename)的System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)at System.Drawing.Image.Save(String filename,ImageFormat format)at System.Drawing.Image.Save(String filename)

码:

byte[] bitmapData = new byte[imageText.Length];
MemoryStream streamBitmap;
bitmapData = Convert.FromBase64String(imageText);
streamBitmap = new MemoryStream(bitmapData);
System.Drawing.Image img = Image.FromStream(streamBitmap);
img.Save(path);
Run Code Online (Sandbox Code Playgroud)

我们将base64字符串转换为MemoryStream,然后创建System.Drawing.Image(Image.FromStream(streamBitmap)).最后,图像保存在临时文件中.

奇怪的是,当Web服务器上的活动(并发用户数)很高并且问题在IISRESET或应用程序池回收后暂时解决时,问题似乎发生了......

==>垃圾收集器问题?

我已经检查了TEMP文件夹的权限......

.net c# asp.net gdi+ image

22
推荐指数
2
解决办法
7万
查看次数

标签 统计

c# ×3

.net ×2

gdi+ ×2

image ×2

asp.net ×1

file ×1

io ×1

memorystream ×1

stream ×1

system.drawing ×1