上传后GDI +发生了一般性错误

时间:2015-04-15 18:44:17

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

我使用此代码在我的网络上重新调整图像mvc它在我的vs 2012上运行良好但是当我在服务器上传它时,这个错误发生在我身上:

  

GDI +中发生了一般性错误。]   System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,   EncoderParameters encoderParams)+811245 Utilty.CompressImage(图片   img,String path,ImageComperssion ic)+431

     public static void ResizeImage(this Stream inputStream, int width, int height, string savePath, ImageComperssion ic = ImageComperssion.Normal)
        {
            System.Drawing.Image img = new Bitmap(inputStream);
            System.Drawing.Image result = new Bitmap(width, height, PixelFormat.Format24bppRgb);
            using (Graphics g = Graphics.FromImage(result))
            {
                g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.DrawImage(img, 0, 0, width, height);
            }
            result.CompressImage(savePath, ic);
        }

public static void CompressImage(this System.Drawing.Image img, string path, ImageComperssion ic)
    {
        System.Drawing.Imaging.EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Convert.ToInt32(ic));
        ImageFormat format = img.RawFormat;
        ImageCodecInfo codec = ImageCodecInfo.GetImageDecoders().FirstOrDefault(c => c.FormatID == format.Guid);
        string mimeType = codec == null ? "image/jpeg" : codec.MimeType;
        ImageCodecInfo jpegCodec = null;
        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
        for (int i = 0; i < codecs.Length; i++)
        {
            if (codecs[i].MimeType == mimeType)
            {
                jpegCodec = codecs[i];
                break;
            }
        }
        EncoderParameters encoderParams = new EncoderParameters(1);
        encoderParams.Param[0] = qualityParam;
        img.Save(path, jpegCodec, encoderParams);
    }

1 个答案:

答案 0 :(得分:1)

  1. 确保您的目标文件夹具有读/写权限,并且目标驱动器上有可用空间
  2. 确保您的托管服务提供商允许您在其共享服务器上使用Memory Streamers。他们大部分时间都没有。