Parameter is not valid calling Bitmap.Save()

百般思念 提交于 2019-12-13 17:19:48

问题


This in in an ASP.NET application.

Locally, this code runs fine, but on our production server, it throws an exception of 'Parameter is not valid' when Bitmap.Save() is called.

Should I not be using System.Drawing.Bitmap because its not recommened based on this:

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

Classes within the System.Drawing namespace are not supported for use within a Windows or ASP.NET service. Attempting to use these classes from within one of these application types may produce unexpected problems, such as diminished service performance and run-time exceptions.

What else could I use?

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);

回答1:


My best guess is that the server does not have the tiff codec installed. If you are running this on Windows Server core, GDI+ is not available.




回答2:


I would verify the input stream that you are passing. I would also make sure i have the relative paths mapped appropriately to the Server Paths.




回答3:


I know this may not be helpful for everyone, as it may be feasible for some projects and not for some others.

But the way I fixed this issue, was to lower down the target from Framework Version 3.5 to 2.0.

That's the only change I did, and then it worked. Seems like the 3.5 searches for another version of the GDI+...

Another thing I wanted to try is using the patch from the KB958911, but I didn't give it a try, after the framework modification worked for me.

Perhaps if you are not able to lower the framework, you could give it a try.



来源:https://stackoverflow.com/questions/5397544/parameter-is-not-valid-calling-bitmap-save

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!