forked from microsoft/onnxruntime-inference-examples
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
83 lines (70 loc) · 2.72 KB
/
index.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
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
<html>
<head>
<!-- import ONNXRuntime Web from CDN -->
<script src="https://cdn.jsdelivr.net/npm/onnxruntime-web/dist/ort.min.js"></script>
</head>
<body>
<h1>Example</h1>
<div>
<input title= "Image from File" type="file" id="file-in" name="file-in">
</div>
<h3>Image from file</h3>
<div>
<img id="original-image" src="#" />
</div>
<h3>Image from tensor</h3>
<canvas id="canvasHTMLElement"></canvas>
<h3>Image from tensor resized</h3>
<canvas id="canvasHTMLElementResize"></canvas>
<h3>Image from tensor (ImageData)</h3>
<canvas id="canvasImageData"></canvas>
</body>
<script>
var canvasHTML = document.getElementById('canvasHTMLElement');
var canvasResize = document.getElementById('canvasHTMLElementResize');
var canvasImageData = document.getElementById('canvasImageData');
async function handleImage(img) {
// HTML Element --> Tensor
const htmlTensor = await ort.Tensor.fromImage(img);
// HTML Element --> Tensor + resized
const resizedTensor = await ort.Tensor.fromImage(img, options = {resizedWidth: 224, resizedHeight: 224});
// Tensor --> ImageData
const imageHTML = htmlTensor.toImageData();
// Tensor --> ImageData (resized)
const resizeImage = resizedTensor.toImageData();
// ImageData --> Tensor
const imageDataTensor = await ort.Tensor.fromImage(imageHTML);
const imageImageData = imageDataTensor.toImageData();
// Presenting the images on dom
canvasHTML.width = imageHTML.width;
canvasHTML.height = imageHTML.height;
let context = canvasHTML.getContext('2d');
context.putImageData(imageHTML, 0, 0);
canvasResize.width = resizeImage.width;
canvasResize.height = resizeImage.height;
context = canvasResize.getContext('2d');
context.putImageData(resizeImage, 0, 0);
canvasImageData.width = imageImageData.width;
canvasImageData.height = imageImageData.height;
context = canvasImageData.getContext('2d');
context.putImageData(imageImageData, 0, 0);
}
function loadImage(fileReader) {
var img = document.getElementById("original-image");
img.onload = () => handleImage(img);
img.src = fileReader.result;
}
function main() {
var img = document.getElementById("original-image");
document.getElementById("file-in").onchange = function (evt) {
let target = evt.target || window.event.src, files = target.files;
if (FileReader && files && files.length) {
var fileReader = new FileReader();
fileReader.onload = () => loadImage(fileReader);
fileReader.readAsDataURL(files[0]);
}
};
}
main();
</script>
</html>