MCPcopy Create free account
hub / github.com/aspnet/AzureSignalR-samples / resizeImage

Function resizeImage

samples/Whiteboard/wwwroot/script.js:17–66  ·  view source on GitHub ↗
(data, maxSize)

Source from the content-addressed store, hash-verified

15}
16
17async function resizeImage(data, maxSize) {
18 return new Promise(resolve => {
19 if (!maxSize) {
20 resolve();
21 return;
22 }
23 let dataURLToBlob = dataURL => {
24 let BASE64_MARKER = ';base64,';
25 if (dataURL.indexOf(BASE64_MARKER) == -1) {
26 let parts = dataURL.split(',');
27 let contentType = parts[0].split(':')[1];
28 let raw = parts[1];
29
30 return new Blob([raw], { type: contentType });
31 }
32
33 let parts = dataURL.split(BASE64_MARKER);
34 let contentType = parts[0].split(':')[1];
35 let raw = window.atob(parts[1]);
36 let rawLength = raw.length;
37
38 let uInt8Array = new Uint8Array(rawLength);
39
40 for (let i = 0; i < rawLength; ++i) {
41 uInt8Array[i] = raw.charCodeAt(i);
42 }
43
44 return new Blob([uInt8Array], { type: contentType });
45 }
46
47 let reader = new FileReader();
48 reader.onload = readerEvent => {
49 let image = new Image();
50 image.onload = function () {
51 let canvas = document.createElement('canvas');
52 let ratio = Math.max(image.width / maxSize, image.height / maxSize);
53 if (ratio < 1) {
54 resolve();
55 return;
56 }
57 canvas.width = image.width / ratio;
58 canvas.height = image.height / ratio;
59 canvas.getContext('2d').drawImage(image, 0, 0, canvas.width, canvas.height);
60 resolve(dataURLToBlob(canvas.toDataURL('image/jpeg')));
61 }
62 image.src = readerEvent.target.result;
63 }
64 reader.readAsDataURL(data);
65 });
66}
67
68let Diagram = function (element, tools) {
69 let id;

Callers 1

script.jsFile · 0.85

Calls 2

dataURLToBlobFunction · 0.85
resolveFunction · 0.50

Tested by

no test coverage detected