我正在尝试从内存流中加载图像(pdf 和 Word 文档),以便在将它们添加到 pdf 之前对其进行操作。每当我尝试加载位图或 GIF 时,我都会遇到一个可怕的 GDI+ 错误。
这个电话...
System.Drawing.Bitmap myImage = System.Drawing.Image.FromStream(docStream);
生成此错误...
System.Runtime.InteropServices.ExternalException occurred
Message="A generic error occurred in GDI+."
Source="System.Drawing"
ErrorCode=-2147467259
StackTrace:
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
at System.Drawing.Image.FromStream(Stream stream)
而这个电话……
System.Drawing.Bitmap myImage = new System.Drawing.Bitmap(docStream);
生成此错误...
System.ArgumentException occurred
Message="Parameter is not valid."
Source="System.Drawing"
StackTrace:
at System.Drawing.Bitmap..ctor(Stream stream)
该代码适用于 png、jpg 和 tif,但不适用于 bmp 或 GIF。
基本上是:
MemoryStream docStream = GetMemoryStream(filePath);
// The next line errors...
System.Drawing.Bitmap myImage = new System.Drawing.Bitmap(docStream);
private MemoryStream GetMemoryStream(string file)
{
FileStream fs = null;
Byte[] bytes;
int len;
fs = File.OpenRead(file);
len = (int)fs.Length - 1;
bytes = new Byte[len];
fs.Read(bytes, 0, len);
return new MemoryStream(bytes);
}
我不会在任何地方关闭 MemoryStream,除非 png 和 jpg 不受关闭的 MemoryStream的影响,否则我认为这不是问题。当我使用十六进制编辑器查看图像文件时,似乎编码不正确。我也尝试了不同的文件大小,以防万一。
在这一点上,我几乎不知所措。任何帮助将不胜感激。
谢谢。