-
Notifications
You must be signed in to change notification settings - Fork 2
/
scale.html
52 lines (48 loc) · 1.59 KB
/
scale.html
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
<script src="main.js"></script>
<script src="scale.js"></script>
Image scaling test<br>
<script>
function scale() {
var canvas1 = document.getElementById("canvas1");
var canvasdiff = document.getElementById("canvasout");
var ctx1 = canvas1.getContext("2d");
var ctxdiff = canvasdiff.getContext("2d");
start = new Date();
imageData1 = ctx1.getImageData(0, 0, canvas1.width, canvas1.height).data;
var resultWidth = canvasdiff.width, resultHeight = canvasdiff.height;
diffData = ctxdiff.createImageData(canvasdiff.width, canvasdiff.height);
var heapSrc=Module._malloc(canvas1.width*canvas1.height*4);
var heapDst=Module._malloc(resultWidth*resultHeight*4);
var HEAP8 = Module.HEAP8;
var HEAPU8 = Module.HEAPU8;
emStart = new Date();
// copy over data to heap
var totalSize = canvas1.height*canvas1.width*4;
for (var i=0; i<totalSize; i++) {
HEAP8[heapSrc + i] = imageData1[i];
}
scaleStart = new Date();
Module._Scale(heapSrc, canvas1.width, canvas1.height, heapDst, resultWidth, resultHeight);
scaleEnd = new Date();
var resultSize = resultHeight * resultWidth*4;
var newData = diffData.data;
for (var i=0; i<resultSize; i++) {
newData[i] = HEAPU8[(heapDst + i)|0];
}
emEnd = new Date()
ctxdiff.putImageData(diffData, 0, 0);
end = new Date();
alert("Took: " + (end - start));
}
</script>
<input type="file" id="input" onchange="handleFiles(this.files, 1)"/>
<button onclick="scale()">Scale</button>
<div id="view">
<br>
2000x1328 result:
<canvas style="border:solid" width="2000" height="1328" id="canvasout">
</canvas>
<canvas width="640" height="480" id="canvas1">
</canvas>
<br>
</div>