在Web API中保存图像时无法解决“GDI +中发生一般错误”

时间:2017-06-16 15:08:19

标签: c# .net image asp.net-web-api

为了这个原因,我搜索了搜索解决方案。但是,我无法找到解决此问题的方法。我使用了与Google引用相同的代码。

以下是我的代码:

public HttpResponseMessage Save_ScreenCaptureDetails([FromBody] ScreenCapture objScreencapture)
{
    //Save the image in given path
    var img2 = Base64ToImage(objScreencapture.FulImg64);
    using (var screenImage = new Bitmap(img2))
    {
        screenImage.Save(
            (string.Format(@"{0}", objScreencapture.FullImagepath)), ImageFormat.Png);
    }

    var thumbnail = Base64ToImage(objScreencapture.ThumbImg64);
    using (var thumbImage = new Bitmap(thumbnail))
    {
        thumbImage.Save(
         (string.Format(@"{0}", objScreencapture.ThumbImagepath)), ImageFormat.Png);
    }

    var result = IreportServices.Save_ScreenCaptureDetails(objScreencapture);
    return Request.CreateResponse(result == null ? HttpStatusCode.NoContent : HttpStatusCode.OK, result);
}

public Image Base64ToImage(string base64String)
{
    // Convert Base64 String to byte[]
    var imageBytes = Convert.FromBase64String(base64String);
    var ms = new MemoryStream(imageBytes, 0,
      imageBytes.Length);

    // Convert byte[] to Image
    ms.Write(imageBytes, 0, imageBytes.Length);
    var image = Image.FromStream(ms, true);
    return image;
}

错误:

  

System.Runtime.InteropServices.ExternalException(0x80004005):GDI +中发生一般错误。      在System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)      在System.Drawing.Image.Save(String filename,ImageFormat format)

注意:我已经为我的文件夹设置了写入权限

1 个答案:

答案 0 :(得分:3)

这个问题有一些可能的原因。

  • 您需要检查当前用户是否对目标文件夹具有(IIS用户)写入权限。
  • 您需要检查当前文件路径objScreencapture.ThumbImagepath和/或objScreencapture.FullImagepath是否存在(文件名除外)。