Image.FromStream,IEC61966-2-1(黑标)编码

时间:2019-07-15 11:45:54

标签: c# asp.net-mvc

简介

无论何时我尝试从base64编码的字符串(通过前端的canvas.toDataURL发送给我)序列化图像时,我都遇到了一个非常奇怪的问题。每当发送的图像使用IEC61966-2-1编码时,我的图像都会返回null。我尝试使用Windows屏幕截图(shift + win + s)对原始图像进行屏幕截图,并且此图像处理得很好。另一方面,由两个随机在线转换器(png-> png,png-> jpg)转换的原始图像在每种情况下均返回null。

到目前为止我尝试过的事情

我已经查阅了Image.FromStream的文档,该文档对于负责序列化图像的方法至关重要。另外,我尝试获取有关IEC61966-2-1格式的一些信息,并大体检查是否还有其他人遇到此问题。由于我对一般格式没有更深入的了解,我发现信息不足以解决这个问题,所以我谦虚地问这个问题。

问题

我该怎么做才能正确序列化以IEC61966-2-1标准编码的图像?我非常想在前端坚持使用canvas.toDataURL,因为我可以轻松地将样式应用于画布。

我的代码

1)前端

// assume canvas with id myCanvas defined

// 1 - to base64 string
var canvas = document.getElementById("myCanvas");
var image = canvas.toDataURL("image/png");
image = image.replace('data:image/png;base64,', '');

// 2 - AJAX request to the server
jQuery.ajax({
 type: "POST",
  url: '@Url.Action("ChangePic", "Ucp")', // assume this is a valid action
  data: {pic: image}
});

2)后端

public JsonResult ChangePic(string pic)
{
  byte[] imageBytes = Convert.FromBase64String(pic);
  using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
  {
   Image image = Image.FromStream(ms, true, true);
  }

  // shortened of some fail checks
  return Json(new {result = ""});
}

很抱歉,这并不是一个最小的,可重复的示例,那样会更长一些。希望它应该像现在这样足够清楚。
请随时询问其他详细信息/说明。

0 个答案:

没有答案