comparison src/uploadcare/croppr2.html @ 0:8f4df159f06b

start public repo
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 11 Jul 2025 20:57:49 -0600
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:8f4df159f06b
1 <!doctype html>
2 <html lang="en">
3 <head>
4 <meta name="viewport" content="width=device-width, initial-scale=1">
5 <style>
6 @import "croppr.css";
7
8 dialog[croppr] img {
9 width: 200px;
10 }
11 canvas[result] {
12 width: 200px;
13 }
14 </style>
15 <script src="croppr.js"></script>
16 <script src="/uploadcare/uploadcare.js"></script>
17 <script>
18 let croppr;
19 function start() {
20 let dialog = document.querySelector('dialog');
21 dialog.showModal();
22 let img = dialog.querySelector('img');
23 //img.src = 'https://ucarecdn.com/ede0040a-b577-4c2e-aeaf-b7f557ba2747/-/quality/smart/';
24 croppr = new Croppr(img, {
25 aspectRatio: 1,
26 });
27 }
28 function cancelCrop() {
29 document.querySelector('dialog[open]').close();
30 croppr.destroy();
31 }
32 function crop() {
33 let value = croppr.getValue();
34 console.log(value);
35 let width = value.width;
36 let height = value.height;
37 croppr.destroy();
38 let dialog = document.querySelector('dialog[croppr]');
39 let imgCroppr = dialog.querySelector('img');
40 console.log(imgCroppr);
41 //let canvas = document.createElement('canvas');
42 let canvas = document.querySelector('canvas[result]');
43 canvas.width = width;
44 canvas.height = height;
45 let ctx = canvas.getContext('2d');
46 ctx.drawImage(imgCroppr, value.x, value.y, width, height, 0, 0, width, height);
47 //let imgResult = document.querySelector('img[result]');
48 //imgResult.url = canvas.toDataURL();
49 dialog.close();
50 }
51 async function loaded(input) {
52 let info = { file: input.files[0] };
53 await uploadcare.infoAddUrl(info);
54 let img = document.querySelector('dialog[croppr] img');
55 img.src = info.url;
56 start();
57 }
58 </script>
59 </head>
60 <body>
61 <p><input type=file onchange="loaded(this)"></p>
62 <dialog croppr>
63 <p><img></p>
64 <p>
65 <button onclick="crop()">crop</button>
66 <button onclick="cancelCrop()">cancel</button>
67 </p>
68 </dialog>
69 <p>result</p>
70 <p><canvas result></canvas></p>
71 <p>bottom</p>
72 </body>
73 </html>