нужно сделать приложение для конкатенации изображений,которые берутся из 2 инпутов(в разметке должны быть только 2 инпута и канвас) и отображаются в теге canvas.На данный момент получается отображать только 1 инпут,и не понимаю как сделать для обоих картинок
let canvas = document.getElementById('canvas');
let context = canvas.getContext('2d');
let uploadedFile = document.getElementById('uploaded-file');
let uploadedFile2 = document.getElementById('uploaded-file2');
window.addEventListener('DOMContentLoaded',initImageLoader);
function initImageLoader(){
uploadedFile.addEventListener('change',handleManualUploadedFiles);
uploadedFile2.addEventListener('change',handleManualUploadedFiles);
function handleManualUploadedFiles (ev){
let file = ev.target.files[0];
let file2 = ev.target.files[1];
handleFile(file,file2);
}
}
function handleFile (file,file2){
let imageType = /image.*/;
if(file.type.match(imageType) ){
let reader = new FileReader();
reader.onloadend = function(event) {
let tempImageStore =new Image();
tempImageStore.onload = function(ev) {
canvas.height = ev.target.height;
canvas.width = ev.target.width;
context.drawImage(ev.target,0,0);
}
tempImageStore.src = event.target.result;
}
reader.readAsDataURL(file);
}
}
У Вас в принципе все правильно, только не надо менять размер канвы под размер вновь загруженной картинки и рисование я применяю со смещением чтобы было видно оба изображения, а Вы рисуете одно поверх другого
let canvas = document.getElementById('canvas');
let context = canvas.getContext('2d');
let uploadedFile = document.getElementById('uploaded-file');
let uploadedFile2 = document.getElementById('uploaded-file2');
window.addEventListener('DOMContentLoaded',initImageLoader);
function initImageLoader(){
uploadedFile.addEventListener('change',handleManualUploadedFiles);
uploadedFile2.addEventListener('change',handleManualUploadedFiles);
function handleManualUploadedFiles (ev){
let file = ev.target.files[0];
handleFile(this, file);
}
}
function handleFile (input, file){
let imageType = /image.*/;
if(file.type.match(imageType) ){
let reader = new FileReader();
reader.onloadend = function(event) {
let tempImageStore =new Image();
tempImageStore.onload = function(ev) {
context.drawImage(ev.target,input.id==="uploaded-file2"?100:0,0);
}
tempImageStore.src = event.target.result;
}
reader.readAsDataURL(file);
}
}
<input type="file" id="uploaded-file">
<input type="file" id="uploaded-file2"><br>
<canvas id="canvas"></canvas>
PS: Еще Вы как-то странно пытаетесь брать значения из обоих инпутов одновременно, функция handleManualUploadedFiles
срабатывает по разу для каждого инпута и обрабатывает файл или файлы выбранные в одном инпуте
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Делаю график в QtНужно подписать координатные оси
В моем приложении у меня есть LineEdit и мне нужно при вводе, к примеру - "Собака" на определенном сайте выводился результат поискаПодскажите пожалуйста...