minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
A compactação de imagens desempenha um papel crucial em muitos cenários de aplicação, especialmente quando o cliente carrega imagens. As imagens originais costumam ser grandes. O upload direto não apenas consome muitos recursos de largura de banda, mas também pode causar velocidades de upload lentas, afetando seriamente a experiência do usuário. Portanto, compactar imagens antes de carregá-las no servidor tornou-se uma medida chave de otimização. Através da compressão, o tamanho dos arquivos de imagem é significativamente reduzido, acelerando assim as velocidades de upload, melhorando a eficiência e garantindo que os usuários tenham uma experiência tranquila e sem complicações. Essa otimização é particularmente importante quando as condições da rede são ruins.
Resumindo, a compactação de imagem pode resolver com eficácia os problemas de pressão de largura de banda e custo de tempo causados pelo upload de arquivos grandes. É um meio eficaz de melhorar a velocidade de resposta do aplicativo e aumentar a satisfação do usuário. Ele processa imagens de forma inteligente, remove dados redundantes e reduz bastante o tamanho do arquivo, mantendo a qualidade visual tanto quanto possível, tornando o processo de upload de imagens mais rápido e eficiente, otimizando assim o desempenho de todo o aplicativo.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<style>
div {
text-align: center;
}
input {
height: 50px;
line-height: 50px;
}
</style>
</head>
<body>
<input id="file" type="file" accept="image/*">
<div>压缩前的图片大小:<span id="beforeSize"></span>
<p><img id="before" /></p>
</div>
<div>压缩后的图片大小:<span id="afterSize"></span>
<p>
<img id="after" />
</p>
</div>
<script>
$("#file").change(function () {
const file = this.files[0];
$("#before").attr("src", URL.createObjectURL(file));
$("#before").css({
width: '500',
height: 'auto'
});
const fileSize = file.size / 1024;
$("#beforeSize").html(fileSize.toFixed(2) + " KB");
if (!file) return;
compressImage(file, 1, 0.7).then(base64 => {
$("#after").attr("src", base64);
$("#after").css({
width: '500',
height: 'auto'
});
const sizeInKB = (base64.length * 3 / 4) / 1024;
$("#afterSize").html(sizeInKB.toFixed(2) + " KB");
});
});
function compressImage(file, maxWidth, quality) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = function (e) {
const img = new Image();
img.onload = function () {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0);
resolve(canvas.toDataURL('image/jpeg', quality || 0.9));
};
img.src = e.target.result;
};
reader.readAsDataURL(file);
});
}
</script>
</body>
</html>