Code work create a working base64 but when i try img.src = imgbase64
;
on a fly it not work, but if copy that base64 image and paste manually to src it work. IN CODE SNIPPET PRESS ON IMAGE AND UPLOAD ANY IMAGE
Question:
How to attache generated on fly image base64 string, to an html img element?
Steps:
- Click on any image
- Upload any image
- Then code convert you uploaded image to base64
- Error here, when adding base64 to src it's not working
function log(msg){return console.log(msg); } function removeClass(el, _className="active"){if(el){return hasClass(el, _className) ? el.classList.remove(_className) : true; } return false; } function hasClass(el, _className="active"){if(el.classList.contains(_className)){return true; } else {return false; } return false; } function getElement(target, targetFrom=false){return targetFrom ? targetFrom.querySelector(target) : document.querySelector(target); } function getElements(target, targetFrom=false){return targetFrom ? [...targetFrom.querySelectorAll(target)] : [...document.querySelectorAll(target)]; } function getElementById(target, targetFrom=false){return targetFrom ? targetFrom.getElementById(target) : document.getElementById(target); } function addClass(el, _className="active"){if(el){return !hasClass(el, _className) ? el.classList.add(_className) : true; } return false; } function getParent(el, idx){previouslyParent = el.parentElement; for (let index = 0; index < idx - 1; index++) {previouslyParent = previouslyParent.parentElement; } return previouslyParent; } function getOffset(el) {const rect = el.getBoundingClientRect(); return {"top": rect.top + window.scrollY, "left": rect.left + window.scrollX }; } function objectToTagStyles(selector, styles){if(styles){var style = document.createElement('style'); resonanceCssString = `${selector} {`; for (const [key, value] of Object.entries(styles)) {resonanceCssString += `${key}:${value};`; } resonanceCssString += "}"; if (style.styleSheet) {style.styleSheet.cssText = resonanceCssString; } else {style.appendChild(document.createTextNode(resonanceCssString)); } document.getElementsByTagName('head')[0].appendChild(style); return true; } return false; } function objectToCssTextStyles(styles){if(styles){resonanceCssString = ''; for (const [key, value] of Object.entries(styles)) {resonanceCssString += `${key}:${value};`; } return resonanceCssString; } return false; } function getAttribute(element, attr, isReturnValue){return isReturnValue ? element.attributes[attr].value : element.attributes[attr]; } function stringGen(yourNumber){var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0; i < yourNumber; i++){text += possible.charAt(Math.floor(Math.random() * possible.length)); } return text; }
let base64String = "";
function imageUploaded() {
var file = this['files'][0];
var reader = new FileReader();
reader.onload = function () {
base64String = reader.result;
imageBase64Stringsep = base64String;
console.log(base64String);
}
imgToChange = getElement(`.change-this-image__${this.id}`);
imgToChange.src = base64String;
reader.readAsDataURL(file);
return base64String;
}
imgs = getElements('img');
svgs = getElements('svg');
getElement('body').style.position = 'relative';
for(let imageElement of imgs){
newChangeImageWrapper = document.createElement("label");
newChangeImageInput = document.createElement("input");
addClass(newChangeImageWrapper, 'reverb-image-changer');
randomNewWapperId = stringGen(10);
randomNewInputId = stringGen(10);
currentImgOffset = getOffset(imageElement);
addClass(newChangeImageWrapper, `reverb-image-changer--id_${randomNewWapperId}`);
newChangeImageWrapper.setAttribute("for", randomNewInputId);
newChangeImageInput.setAttribute("id", randomNewInputId);
newChangeImageInput.type = "file";
newChangeImageInput.onchange = imageUploaded;
newChangeImageWrapper.appendChild(newChangeImageInput)
addClass(imageElement, `change-this-image__${randomNewInputId}`);
currentImageBoundaries = imageElement.getBoundingClientRect();
currentWrapperStyles = {
"width": `${currentImageBoundaries.width}px`,
"height": `${currentImageBoundaries.height}px`,
"position": "fixed",
"top": `${currentImageBoundaries.y}px`,
"left": `${currentImageBoundaries.x}px`
}
newChangeImageWrapper.style.cssText = objectToCssTextStyles(currentWrapperStyles);
getElement('body').appendChild(newChangeImageWrapper);
}
.reverb-image-changer{
display: block;
border: 1px solid transparent;
text-align: center;
color: white;
cursor: pointer;
margin-top: 0;
transition: .3s;
z-index: 999;
}
.reverb-image-changer:hover{
border-color: rgb(46, 204, 113);
cursor: pointer;
}
.reverb-image-changer input{
width: 0px;
height: 0px;
visibility: hidden;
position: absolute;
top: 0;
left: -100%;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<img src="https://picsum.photos/200/300" alt="" width="200" height="300">
<img src="https://picsum.photos/200/300" alt="" width="200" height="300">
<img src="https://picsum.photos/200/300" alt="" width="200" height="300">
<img src="https://picsum.photos/200/300" alt="" width="200" height="300">
</body>
</html>
It looks like your post is mostly code; please add some more details.