-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathphoto-drawer.mjs
87 lines (69 loc) · 1.61 KB
/
photo-drawer.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
let moveImg = false;
let img = undefined;
let startX = 0;
let startY = 0;
const size = 1000;
let filterElem, canvas, ctx;
let filter = 'filter-normal';
function readURL(input) {
if (input.files && input.files[0]) {
const reader = new FileReader();
reader.onload = (e) => {
img = new Image();
img.src = e.target.result;
img.onload = onLoad();
};
reader.readAsDataURL(input.files[0]);
}
}
function changeFilter(filterVal) {
if(filterVal) {
filterElem.classList.replace(filter, `filter-${filterVal}`);
filter = `filter-${filterVal}`;
}
const filterValue = window.getComputedStyle(filterElem).filter;
ctx.filter = filterValue;
drawImage();
}
function onLoad() {
changeFilter('normal');
drawImage();
}
function moveImage(event) {
if(moveImg) {
const moveX = event.movementX;
const moveY = event.movementY;
startX += moveX;
startY += moveY;
if(startX < 0) {
startX = 0;
}
if(startY < 0) {
startY = 0;
}
const endX = startX + size;
const endY = startY + size;
if(endX > img.width) {
startX = img.width - size;
}
if (endY > img.height) {
startY = img.height - size;
}
drawImage();
}
}
function toggleMove(move) {
if(!img) {
return;
}
moveImg = move;
}
function drawImage() {
ctx.drawImage(img, startX, startY, size, size, 20, 20, 298, 298);
}
function init () {
filterElem = document.getElementById('currFilter');
canvas = document.getElementById("canvas");
ctx = canvas.getContext("2d");
}
export {moveImage, drawImage, readURL, toggleMove, init, changeFilter };