javascript - 获取对象 HTMLImageElement 而不是 base64 字符串

标签 javascript jquery html image canvas

这是我上一个问题的延续,但问题是新的,并且该问题的解决方案没有帮助。这是一个新问题。

这是我上一个问题的链接,我在其中询问如何将 Canvas 转换为图像:javascript- unable to convert canvas to image data

我希望获得图像的 base64 编码字符串,我可以通过 AJAX 调用将其发送到 PHP 服务,PHP 服务会将其转换为图像并将其移动到指定目录。

将 Canvas 转换为图像的函数

function convertCanvasToImage(canvas) 
{
    var image = new Image();
    image.src = canvas.toDataURL("image/png");
    return image;
}

这是我创建的表单:

var url = 'url to php service';
var file =  dataURL; //this is the image url that i'm sending
console.log(file);

var formdata = new FormData();
formdata.append("base64image", file);
formdata.append('csrf_test_name',csrf_token);
var ajax = new XMLHttpRequest();
ajax.addEventListener("load", function(event) {
    uploadcomplete(event);
}, false);
ajax.open("POST", url);
ajax.send(formdata);

我尝试了 console.log() Canvas 返回的图像,这就是我获得的:

 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4nGzbZ3Mba5au6fqvJ2JiTs/pPtVV20j0sOm9T3iARqI3IOi9SIoGHqATJe29q/v8jXs+QMWeHT0fnkgGyUgCiRfIi2ut9y9OqYGZ3yKqHWHlttFiCz1nE8Q+XuDiuSb5XEBccYgrDv6si5ZTMOZMzHkLMS6gFspI8TxiOEfkfCS0P1AM1lmcPaJYPcbyNvDDHUqVU5zdTaS1j4hFm3Erg5bxCK0KxXiWUm6OcLaAW46xCzZBNcAOF3FzK8TBIoG7QC7v4AUalqdRquVQZxeQa/PYc2vYc2uUnWUCuYovR+TMEoEVY8oOnhES2jlKVo2au0DZXiVSF/DciDDMUyjOEuerGGqJYm6VaG6DhBahOyW8eB4rrBGVl5BmZ5FmZ1HyLlrJZ37ep1jUyXseOdel7FWpBrMUgwXy3ixGJGLlZLRIxipoh...Hd7sRkseD2ebFF/Bj9btUYEnDzGHRy57XgcDiw2WyYDPdYzFp0dgvXBh0XeiPmYBit2YzBbufR4uDR4kBrd3BtNHHvs6ty3HJru+beoUXn0vPgNaD1Gbl1udFYbWhMFlU2E7du+zTmRWt75MGqw+axYvNYebRpMbmNaF0OzEE/+nQAXcrHpeBAk7BzJTm4zXg4Kdq4afq4nGS4fslyO85x1IizEbWwJzo5Lzu4bfk560Y5agY57SfYawS57sS4akfRFJxc5B1cl7XcVh85Gfo47HvYaFvY6ds5Hvg5GQY4bUY5rofQtAUumgk0XVXXozSXQxX+rnsSt20nmrqFG+URbdHMVSOGphbmrCNw1hG46Dg4aaoxP0c1B0dVD7sFO0cFG0cFG+fKNSeyhjPhBI10zmnqnPP0xRQAD1Pqs7CSV7VV3mCztM5Rbpnz8joXHSPXfQuXPQ9XAy9noxgXE4HT/8pz8X/L/D+QyAVhXuteXgAAAABJRU5ErkJggg==">

它有图像标签。也许正因为如此;当我将它传递给 PHP 服务时,它无法转换它。这是我调试时返回的结果

object HTMLImageElement

我尝试使用下面给出的函数将上述图像标签转换为 base64,但失败了。

function encodeImageFileAsURL(cb) {
    return function(){
        var file = this.files[0];
        var reader  = new FileReader();
        reader.onloadend = function () {
            cb(reader.result);
        }
        reader.readAsDataURL(file);
    }
}

任何人都可以帮助我理解我在这里缺少什么吗?非常感谢!

引用: https://davidwalsh.name/browser-camera

https://davidwalsh.name/convert-canvas-image

最佳答案

您已经拥有 data URIsrc <img>的变量 image 处的元素。传递 src 的值<img>的元素至php ,而不是 html <img>元素。

var file = image.src; //this is the image url that i'm sending

关于javascript - 获取对象 HTMLImageElement 而不是 base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171841/

相关文章:

java - 如何在 servlet 中使用 Google map ?

javascript - 数据表根据另一个值计算列总计

javascript - HTML/CSS float left 自动填充空白

javascript - 默认选项卡导航在 Mozilla 中不起作用

javascript - 如何让 angular.js 不覆盖其他库的链接功能?

javascript - React Native - 导入自定义组件时出现导航错误

javascript - 使用fabricjs(1.7.20)从保存/打印中排除背景图像?

javascript - 当我击中拇指不完全在中心时,使输入范围不跳跃

javascript - 即使在 jquery 函数中满足条件后,Firefox 也会无限运行

javascript - jquery 预加载带有翻转的图像