Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将img转换为文件并返回Javascript_Javascript_Html - Fatal编程技术网

将img转换为文件并返回Javascript

将img转换为文件并返回Javascript,javascript,html,Javascript,Html,假设一个网页有一个需要上传的img标签。如何将其转换为文件对象,以便将其发送过来 在另一端,我有一个假想的img,转换成文件并发送给我。如何将其转换为HTML标记 我对后一部分有一个初步的出发点: imageUrl = URL.createObjectURL(file); image = document.createElement("img"); image.src = imageUrl; 如果您已经在html页面中加载了图像,您可以将其编码为base64,然后通过ajax调用将其发送到服务

假设一个网页有一个需要上传的img标签。如何将其转换为文件对象,以便将其发送过来

在另一端,我有一个假想的img,转换成文件并发送给我。如何将其转换为HTML标记

我对后一部分有一个初步的出发点:

imageUrl = URL.createObjectURL(file);
image = document.createElement("img");
image.src = imageUrl;

如果您已经在html页面中加载了图像,您可以将其编码为base64,然后通过ajax调用将其发送到服务器并保存

Javascript

function getBase64Image(img) {
  // Create an empty canvas element
  var canvas = document.createElement("canvas");
  canvas.width = img.width;
  canvas.height = img.height;

  // Copy the image contents to the canvas
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0);

  // Get the data-URL formatted image
  // Firefox supports PNG and JPEG. You could check img.src to
  // guess the original format, but be aware the using "image/jpg"
  // will re-encode the image.
  var dataURL = canvas.toDataURL("image/png");

  return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

$.ajax({
  type: "POST",
  url: "/yourPage.aspx/YourWebMethod",
  data: "{yourParameterName:'" + JSON.stringify(getBase64Image(yourAlreadyLoadedImage)) + "'}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
      async: false,
  success: function (data) {
    var result = data.d;
  },
  error: function () { alert('/yourPage.aspx/YourWebMethod'); }
});
服务器端您可以解码base64图像并将其保存,例如,以JPEG格式保存

C#


将图像URL发送到服务器,然后使用服务器端获取实际的图像不是更容易吗?我正在尝试一些错误的方法。设想生成映像的服务器现在已关闭或崩溃。只有我的网页上有这个图像。在这种情况下,URL实际上是无用的,不是吗?可能会投票支持你,但遗憾的是缺乏声誉。
public void Base64ToImage(string coded)
{
  System.Drawing.Image finalImage;
  MemoryStream ms = new MemoryStream();
  byte[] imageBytes = Convert.FromBase64String(coded);
  using(var ms = new MemoryStream(imageBytes)) {
    finalImage = System.Drawing.Image.FromStream(ms);

  }

   finalImage.Save(yourFilePath, ImageFormat.Jpeg);

}