我有一个函数,它首先从磁盘读取图像,调整大小,然后保存到另一个目录.
当我使用Bitmap.Save(目录theimagename)时,它返回错误,如我在问题标题中所述.
我检查了目录是否正确,并且该目录中不存在给定的图像名称.
奇怪的是,相同的代码在本地机器上运行良好.但是当我将它上传到我的共享主机空间时,它只是不起作用.
代码如下.
bmpOut = new Bitmap(Size,Size); Graphics g = Graphics.FromImage(bmpOut); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.FillRectangle(Brushes.White,Size,Size); int topBottomPadding = 0; int leftRightPadding = 0; if (Size > lnNewWidth + 1) leftRightPadding = Convert.ToInt32((Size - lnNewWidth) / 2); else if (Size > lnNewHeight + 1) topBottomPadding = Convert.ToInt32((Size - lnNewHeight) / 2); g.DrawImage(loBMP,leftRightPadding,topBottomPadding,lnNewWidth,lnNewHeight); Bitmap bmp = new Bitmap(bmpOut); if (bmp != null) bmp.Save(ResizedOutput); // C:\Inetpub\vhosts\DomainName\httpdocs\ProductImages\500px\gigabyte_ga_ep45_ds4_profilelarge[1].jpg bmp.Dispose(); bmpOut.Dispose(); g.Dispose(); loBMP.Dispose();
堆栈跟踪:
[ExternalException (0x80004005): A generic error occurred in GDI+.] System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams) +377630 System.Drawing.Image.Save(String filename,ImageFormat format) +69 System.Drawing.Image.Save(String filename) +25 Utilities.ResizeImage(String fileName,String mode) in c:\inetpub\vhosts\batuhanakcay.com\httpdocs\App_Code\Utilities.cs:181 Link.ToProductImage(String fileName) in c:\inetpub\vhosts\batuhanakcay.com\httpdocs\App_Code\Link.cs:79 Product.PopulateControls(ProductDetails pd) in c:\inetpub\vhosts\batuhanakcay.com\httpdocs\Product.aspx.cs:37 Product.Page_Load(Object sender,EventArgs e) in c:\inetpub\vhosts\batuhanakcay.com\httpdocs\Product.aspx.cs:20
解决方法
从
ASP Net – GDI+ and SAVE JPG or BMP on the server起
99.9% of the time,when using GDI,‘a generic error occured’ means that the
@H_404_28@
directory you are trying to save to
doesn’t ahve the proper permissions.
Typically,you need to make sure that
directory is allowing asp.net to
modify files.你检查了权限吗?