【问题标题】:saving image with bitmap issue保存带有位图问题的图像
【发布时间】:2016-12-15 03:06:37
【问题描述】:

我有有效的 base64 图像。我将其转换为图像。

使用Image.Save(Path)保存
我有 Gdi+ 错误。

当我尝试使用位图保存时。图片会保存,但图片全黑 Like

这是我的代码

            var encode = EncodeBase64(model.Base64Photo);

                //model.Base64Photo = model.Base64Photo.Replace("data:image/png;base64,", "").Replace("data:image/jpeg;base64,", "");
                //var imageBytes = Convert.FromBase64String(encode);

                var ms = new MemoryStream(encode);
                var returnImage = Image.FromStream(ms);
                var bitmap = new Bitmap(returnImage);
                bitmap.Save($@"C:\inetpub\wwwroot\Dropbox\Websites\2.fidilio.com\Storage\Images\animal\storage\images\animal\{model.Name}-{model.Email}.jpg", ImageFormat.Jpeg);
                bitmap.Dispose();
     public byte[] EncodeBase64(string data)
    {
        string s = data.Trim().Replace(" ", "+").Replace("-", "+").Replace("/", "+");
        if (s.Length % 4 > 0)
            s = s.PadRight(s.Length + 4 - s.Length % 4, '=');
        return Convert.FromBase64String(s);
    }

我很困惑,问题出在哪里

【问题讨论】:

  • @CodyGray PhysicalFolderPath 是 C:\\inetpup\\
  • 科迪..什么??无论如何,你得到了什么 GDI 错误?
  • GDI 出现一般错误+此错误

标签: c# bitmap


【解决方案1】:

看起来你正在从字符串中创建内存流,对吗?您应该像这样从字节数组制作内存流。

string s = "iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAAAAAAcD2kOAAACOklEQVR4Ae3YhbIdIQwA0H7YBshzd3d3d7sKJO+vqwxzty4L7UyTkfU9K0CAN/iXQmCBBf5XYIEFFlhggQXeeqr9dDxvVgi/2F+IeoVw/VfgWoVw7VfgF4H/HHbE5L+uEZNLBnt7c3Rao6+w3t0cntUpEeyfJzRAzxF96b5MalB9p5QEdq3RAhG1virL8YgKR6qG+aj4uK5G2q7kxiMw7ZPAK/BpA/a55MYjpq/hUsBrAda9NV+GwxE90EwB07kKW7BSeuV4BBYpSal2U+GVDd5RSW4P67A7CUw3xmAoRV/71rDKiRoQXoKwrU65BB8qRN1X94lg/9KjQ/kaarkyHAp7GtjyNoQdsMOd8DqgGrUuGezawyq8cs+zj66zIxr1BSVMi3waq9QiR/j1TCHMkU0Axz6Xn47l6+g1fFp+7tem6yEtTHdoQmU2B56988R3QwphgxP3QHi1wCCryZOn+svVUpdCPdBwiWFf69UYQqnu3h4NBhGOOHmfi/cBY5hPbZkaty4pHOqOwnIYfU0Zepl0obEcsEBZurc0C+UX7nnyWWD/0GU6DxZbnKlDz+tFxzE12HSZYN/o1xgDTjjbEIYPIR5Sk85mg50dV7Em31I+2NK1DuULljjraJEWIHR1X3xW2D93q49VaZczj4/5FAsFsOSyD8zpYXV68czlh61nIvo/50AErlUIP5D/6aDHCuHFk7OfjpMVma8WWGCBBRZYYIEFFlhggQUWWGCBBRZYYIEFFlhggQV+B9418JaaYBt6AAAAAElFTkSuQmCC";

    var imageBytes = Convert.FromBase64String(s);

    var ms = new MemoryStream(imageBytes);
    var returnImage = Image.FromStream(ms);
    var bitmap = new Bitmap(returnImage);
    //bitmap.Save($@"C:\inetpub\wwwroot\Dropbox\Websites\2.fidilio.com\Storage\Images\animal\storage\images\animal\{model.Name}-{model.Email}.jpg", ImageFormat.Jpeg);
    bitmap.Save(@"c:\temp\img.jpg");
    bitmap.Dispose();

【讨论】:

  • 好吧,您尝试过我回答中的代码吗?这是 base64 编码的图像,在此 site 上创建。您确定您的方法返回有效的 base64 字符串吗?
  • 它说我的文件太大并且没有得到基数 64
猜你喜欢
  • 2019-09-03
  • 2011-01-27
  • 1970-01-01
  • 2015-12-28
  • 2010-12-07
  • 2012-10-28
  • 2010-12-29
  • 1970-01-01
  • 2011-06-20
相关资源
最近更新 更多