【问题标题】:How to send a bitmap of a preview image to a controller?如何将预览图像的位图发送到控制器?
【发布时间】:2019-06-30 17:56:29
【问题描述】:

我正在开发一个项目,用户需要将图片上传到 ASP.NET MVC Core Web 应用程序。目前,当用户选择一张图片时,他会得到一个预览,以查看他/她上传了哪张图片。

现在我需要在两张图片上进行车牌识别(我已经在控制器中有识别代码,所以我只需要控制器中的图像位图。

这是我目前的代码:

当前 HTML/Javascript 代码

当用户按下“查看图片”按钮时,应用需要验证某个车牌是否在“选中”图片中。如果图像只是被选中而不上传到服务器,是否可以获得比特流? 我可以显示图像的事实告诉我是的,还是我错了?

如果是这样,我如何在我的控制器中获取图片的位图? 我还添加了一张我的 MVC 项目架构的图片以便更好地理解:

项目架构

提前致谢。

【问题讨论】:

  • 请将您的代码粘贴为文本而不是截图。

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


【解决方案1】:

假设您有输入类型文件

<input type="file" onchange="encodeImageFileAsURL(this)" />

在 onchange 函数内部(将此添加到您现有的 onchange 函数中)

function encodeImageFileAsURL(element) {
     var file = element.files[0];
     var reader = new FileReader();
    reader.onloadend = function() {
    console.log('RESULT', reader.result)
    sendBase64(reader.result);
   }
   reader.readAsDataURL(file);

}

然后使用此功能,您可以将图像作为 base64 发送到控制器

  function sendBase64(base64){
  var formdata = new FormData();
  formdata.append("base64image", base64);

  $.ajax({
      url: "@Url.Action("SaveImage")",
     type: "POST",
    data: formdata,
     processData: false,
    contentType: false
   });
 }

控制器方法

    [HttpPost]
    public void SaveImage(string base64image)
    {

      Bitmap bmp = Base64ToBitmap(base64image);
     //do something with bitmap

    }

    public Bitmap Base64ToBitmap(String base64String)
    {
    byte[] imageAsBytes = Base64.Decode(base64String, Base64Flags.Default);
    return BitmapFactory.DecodeByteArray(imageAsBytes, 0, imageAsBytes.Length);
    }

【讨论】:

  • 您好,感谢您的回答!我已经实现了您对 JavaScript 代码的更改并添加了 sendBase64 函数,但是当我在控制器方法中尝试您的代码时,我无法使用位图库? Alt + enter 没有给出一个像样的解决方案,我找不到一个好的解决方案。我需要使用其他东西吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2011-12-14
相关资源
最近更新 更多