c语言编程笔录

首页 >   > 笔记大全

笔记大全

canvas实现压缩图片的代码示例

更新时间:2023-12-01

压缩图片的代码示例

在前端开发中,有时候需要对上传的图片进行压缩,以减少图片的大小,提高页面加载的速度。本文将为您提供一个使用canvas实现图片压缩的示例代码。

首先,我们需要在HTML中创建一个input元素,用于选择上传的图片。

<input type="file" id="imageFile" accept="image/*" onchange="handleFileSelect(event)">

接下来,我们需要编写JavaScript代码来处理用户选择的图片,并使用canvas进行压缩。代码如下所示:

function handleFileSelect(event) {
  var file = event.target.files[0];
  
  var reader = new FileReader();
  reader.onload = function(event) {
    var img = new Image();
    img.onload = function() {
      var canvas = document.createElement("canvas");
      var ctx = canvas.getContext("2d");
      
      // 压缩图片的最大宽度和最大高度
      var maxWidth = 800;
      var maxHeight = 800;
      
      // 计算压缩后的图片大小
      var width = img.width;
      var height = img.height;
      
      if (width > height) {
        if (width > maxWidth) {
          height = Math.round(height * maxWidth / width);
          width = maxWidth;
        }
      } else {
        if (height > maxHeight) {
          width = Math.round(width * maxHeight / height);
          height = maxHeight;
        }
      }
      
      // 设置canvas的大小
      canvas.width = width;
      canvas.height = height;
      
      // 绘制压缩后的图片到canvas上
      ctx.drawImage(img, 0, 0, width, height);
      
      // 获取压缩后的图片数据
      var compressedImageData = canvas.toDataURL("image/jpeg", 0.8);
      
      // 在此处可以将compressedImageData上传到服务器或进行其他操作
      
      // 将压缩后的图片显示在页面上
      var compressedImage = document.createElement("img");
      compressedImage.src = compressedImageData;
      document.body.appendChild(compressedImage);
    };
    
    img.src = event.target.result;
  };
  
  reader.readAsDataURL(file);
}

以上代码中,我们首先获取用户选择的文件,然后创建一个FileReader对象,读取图片数据。当图片加载完成后,我们创建一个canvas元素,并利用canvas的getContext方法获取2D上下文。接着,我们根据需要压缩的最大宽度和高度对图片进行等比例缩放,并将缩放后的图片绘制到canvas上。最后,我们通过canvas的toDataURL方法获取压缩后的图片数据,并在页面上显示。

总结

借助canvas,我们可以轻松地实现图片压缩功能。以上代码示例可以实现选择图片并压缩后显示在页面上的效果。您可以根据实际需求进行修改和扩展,例如添加上传功能、自定义压缩比例等。希望本文对您有所帮助!