在 2011 年,我们可以知道使用 File API 和 canvas 来实现。这目前仅适用于 Firefox 和 chrome。这是一个例子:
var file = YOUR_FILE,
    fileType = file.type,
    reader = new FileReader();
reader.onloadend = function() {
  var image = new Image();
      image.src = reader.result;
  image.onload = function() {
    var maxWidth = 960,
        maxHeight = 960,
        imageWidth = image.width,
        imageHeight = image.height;
    if (imageWidth > imageHeight) {
      if (imageWidth > maxWidth) {
        imageHeight *= maxWidth / imageWidth;
        imageWidth = maxWidth;
      }
    }
    else {
      if (imageHeight > maxHeight) {
        imageWidth *= maxHeight / imageHeight;
        imageHeight = maxHeight;
      }
    }
    var canvas = document.createElement('canvas');
    canvas.width = imageWidth;
    canvas.height = imageHeight;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(this, 0, 0, imageWidth, imageHeight);
    // The resized file ready for upload
    var finalFile = canvas.toDataURL(fileType);
  }
}
reader.readAsDataURL(file);