-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
110 lines (94 loc) · 2.8 KB
/
Copy pathscript.js
File metadata and controls
110 lines (94 loc) · 2.8 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
const inputImagem = document
.getElementById('inputImagem');
const canvas = document.getElementById(
'canvas');
const progressBar = document
.getElementById('progressBar');
const progressFill = document
.getElementById('progressFill');
const imagemWebp = document
.getElementById('imagemWebp');
const downloadLink = document
.getElementById('downloadLink');
const qualityRange = document
.getElementById('qualityRange');
const qualityValue = document
.getElementById('qualityValue');
// Atualiza o valor da qualidade no label ao mover o slider
qualityRange.addEventListener('input',
function() {
qualityValue.textContent =
qualityRange.value;
});
inputImagem.addEventListener('change',
function(event) {
const file = event.target.files[0];
if (!file) return;
// Extrair o nome do ficheiro original (sem a extensão)
const originalName = file.name
.split('.').slice(0, -1).join('.');
const reader = new FileReader();
reader.onload = function(e) {
const img = new Image();
img.src = e.target.result;
img.onload = function() {
// Atualizar barra de progresso (início)
progressBar.style.display =
'block';
progressFill.style.width =
'30%';
// Definir o tamanho do canvas de acordo com a imagem carregada
canvas.width = img.width;
canvas.height = img.height;
const ctx = canvas.getContext(
'2d');
ctx.drawImage(img, 0, 0);
// Ajustar a qualidade com base no slider
const qualidade = qualityRange
.value / 100;
// Converter o conteúdo do canvas para WebP
const webpDataUrl = canvas
.toDataURL('image/webp',
qualidade);
// Atualizar barra de progresso (quase completo)
progressFill.style.width =
'70%';
// Mostrar a imagem convertida
imagemWebp.src = webpDataUrl;
imagemWebp.onload = function() {
// Atualizar barra de progresso (completo)
progressFill.style.width =
'100%';
// Mostrar o link de download e a imagem convertida
downloadLink.href =
webpDataUrl;
downloadLink.download =
originalName +
'.webp'; // Manter o nome original e usar extensão .webp
downloadLink.style.display =
'inline-block';
imagemWebp.style.display =
'block';
// Ocultar barra de progresso após um pequeno atraso
setTimeout(() => {
progressBar.style.display =
'none';
progressFill.style.width =
'0';
}, 500);
};
};
};
reader.readAsDataURL(file);
});
// Adicionar evento de clique ao link de download
downloadLink.addEventListener('click',
function() {
// Esperar um curto intervalo para o download iniciar e recarregar a página
setTimeout(() => {
location
.reload(); // Recarregar a página após o download
},
2000
); // O atraso garante que o download tenha tempo de ser processado
});