参数无效调用Bitmap.Save()

时间:2011-03-22 20:38:22

标签: c# .net asp.net asp.net-4.0

这是在ASP.NET应用程序中。

在本地,这段代码运行正常,但是在我们的生产服务器上,当调用Bitmap.Save()时,它会抛出“参数无效”的异常。

我是否应该使用System.Drawing.Bitmap,因为它不是基于此推荐的:

http://msdn.microsoft.com/en-us/library/system.drawing.aspx

  

不支持使用System.Drawing命名空间中的类   在Windows或ASP.NET服务中。   试图使用这些类   在这些应用程序类型之一   可能会产生意想不到的问题   由于服务性能下降和   运行时异常。

我还能用什么?

Bitmap myBitmap = new Bitmap(img);
myBitmap.SetResolution(img.HorizontalResolution, img.VerticalResolution);

// get the tiff codec info
ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/tiff");

// Create an Encoder object based on the GUID for the Compression parameter category
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Compression;

// create encode parameters
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, (long)EncoderValue.CompressionCCITT4);
myEncoderParameters.Param[0] = myEncoderParameter;

// save as a tiff
myBitmap.Save(input, myImageCodecInfo, myEncoderParameters);

3 个答案:

答案 0 :(得分:1)

我最好的猜测是服务器没有安装tiff编解码器。如果您在Windows Server核心上运行此操作,则GDI +不可用。

答案 1 :(得分:0)

我会验证您传递的输入流。我还要确保将相对路径适当地映射到服务器路径。

答案 2 :(得分:0)

我知道这对每个人都没有帮助,因为某些项目可能是可行的,而对其他项目则不然。

但我解决这个问题的方法是将目标从Framework Version 3.5降低到2.0。

这是我做过的唯一改变,然后才有效。好像3.5搜索另一个版本的GDI + ......

我想尝试的另一件事是使用KB958911中的补丁,但在框架修改为我工作后,我没有试一试。

也许如果你无法降低框架,你可以尝试一下。