从div获取所有图像,并使用javascript将src替换为base64
这就是我要做的从div获取所有图像,并使用javascript将src替换为base64,javascript,html,Javascript,Html,这就是我要做的 <!--HTML--> <div class="col-md-11" id="divContent"> <textarea class="ckeditor form-control" name="editor1" id="editor1" rows="6"> <p>This is a test image</p> <img src="https://www.google.c
<!--HTML-->
<div class="col-md-11" id="divContent">
<textarea class="ckeditor form-control" name="editor1" id="editor1" rows="6">
<p>This is a test image</p>
<img src="https://www.google.com.au/images/srpr/logo11w.png" />
</textarea>
</div>
<!--javascript-->
<script>
function parseImages()
{
//var html = CKEDITOR.instances.editor1.getData();
var images = document.getElementById("divContent").getElementsByTagName('img');
for (i = 0, len = images.length; i < len; i++)
{
var newSrc= images[i].src.replace('data:image/png;base64,'+ convertToBase64(images[i].src));
alert(newSrc);
}
}
//convert image to base 64
function convertToBase64(URL)
{
var img = new Image();
img.src = URL;
img.onload = function () {
var canvas = document.createElement("canvas");
canvas.width = this.width;
canvas.height = this.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(this, 0, 0);
var dataURL = canvas.toDataURL("image/png");
dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
}
</script>
我无法捕获我的var图像中的图像。
文本区域来自ck Text editor,我也尝试从id=editor1获取图像,但也不起作用,如果有人有解决方案,请提供建议。Btw这行是odd var newSrc=images[I].src.replace'data:image/png;base64'+ConvertToBase64图像[i].src;convertToBase64不返回任何内容。只需调用传递给它的image元素,并在加载映像时在其中设置src。并且似乎onload与此行具有相同的替换。textarea的内容值将始终为字符串。不能对字符串调用getElementsByTagName。也许您可以在内存中创建一个新文档,并使用此字符串作为innerHTML填充它,然后作为元素访问标记。@KevinBoucher我试图像document.createcontent那样加载文档,但它用新内容更改了我的界面,这是我不想要的。我不知道如何在内存中实现它,你能给我一个例子,或者给我其他方法来实现它吗,可能是从string.var content=document.createElement'div'中找到img标记;然后content.innerHTML=[your textbox value]然后content.getElementsByTagName'img'-我想这会有用的。@KevinBoucher,谢谢你,这位好朋友,但现在我在var dataURL=canvas.toDataURLimage/png行遇到了另一个问题;as Uncaught SecurityError:未能对“HtmlCanvaElement”执行“toDataURL”:可能无法导出受污染的画布。我不太熟悉这一点,如果你能提供建议,那就太好了。