Чтобы отобразить изображение с диска пользователя, достаточно создать URL-адрес, указывающий на него, и установить src
тег *1002*, указывающий на этот URL-адрес.
Вы, очевидно, знаете, как это сделатьс URL.createObjectURL .
В вашей перетаскиваемой версии у вас уже есть такой элемент, поэтому вам просто нужно установить его src
во входном файле onchange событие:
fileup.onchange = e => {
target_img.src = URL.createObjectURL(fileup.files[0]);
}
///Below is OP's code\\\
let prevX = 0, prevY = 0,translateX = 0, translateY = 0, scale = 1, zoomFactor = 0.1;
//const img = document.querySelector('#uploadedImg img');
function onDragStart(evt) {
if (evt.dataTransfer && evt.dataTransfer.setDragImage) {
evt.dataTransfer.setDragImage(evt.target.nextElementSibling, 0, 0);
}
prevX = evt.clientX;
prevY = evt.clientY;
}
function onDragOver(evt) {
translateX += evt.clientX - prevX;
translateY += evt.clientY - prevY;
prevX = evt.clientX;
prevY = evt.clientY;
updateStyle();
}
function updateStyle()
{
let transform = "translate(" +translateX+ "px, "+ translateY + "px) scale("+scale+")";
if(document.querySelector('#uploadedImg img'))document.querySelector('#uploadedImg img').style.transform = transform;
}
.masked-img {
background-color: green;
margin: 20px auto;
-webkit-mask-image: url(https://i.stack.imgur.com/EQpM4.png);
mask-image: url(https://i.stack.imgur.com/EQpM4.png);
-webkit-mask-position: center center;
mask-position: center center;
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
position:relative;
bottom:60px;
left:40px;
}
.minaimg {
display: block;
}
<input type="file" id="fileup" />
<div class="minaimg masked-img" ondragover="onDragOver(event)" >
<div draggable="true" ondragstart="onDragStart(event)" id="uploadedImg">
<div class="minaimg">
<!-- give an id for ease of selection -->
<img id="target_img" src="https://i.stack.imgur.com/AV6yq.jpg" alt="">
<div></div>
</div>
</div>
</div>