📜  编辑个人资料照片引导程序 (1)

📅  最后修改于: 2023-12-03 15:11:43.028000             🧑  作者: Mango

编辑个人资料照片引导程序

本程序旨在帮助用户更轻松地编辑个人资料照片,使个人资料更加完善。以下是程序具体介绍:

技术要点
  • 图片上传:使用七牛云存储API实现图片上传功能,保证图片存储和传输安全;
  • 图片裁剪:使用Jcrop插件实现图片裁剪功能,用户可根据需求对选取区域进行自由裁剪;
  • 预览功能:使用HTML5 FileReader API实现本地图片预览功能,用户可在未上传图片前提前预览图片。
使用方法
  1. 首先,用户需要选择需要上传的图片,并点击上传按钮,系统将自动上传图片至七牛云存储服务器;
  2. 上传成功后,用户可根据需要进行图片裁剪,然后点击裁剪完成按钮,保存裁剪后的图片;
  3. 最后,用户需确认预览图片无误,点击保存按钮进行保存。
代码示例
// 上传图片
function uploadFile(file) {
  var xhr = new XMLHttpRequest();
  xhr.open('POST', 'https://upload.qiniu.com/');
  var formData = new FormData();
  formData.append('file', file);
  formData.append('token', TOKEN); // 七牛云存储的 TOKEN
  xhr.send(formData);
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
      var key = JSON.parse(xhr.responseText).key;
      // 在此处调用裁剪功能
      clipImage(key);
    }
  }
}

// 图片裁剪
function clipImage(key) {
  var image = new Image();
  image.src = 'https://url.xxx.com/' + key; // 七牛云存储的图片 URL
  image.onload = function() {
    var width = image.width > 800 ? 800 : image.width;
    var height = image.height > 800 ? 800 : image.height;
    $('#img-container').show();
    $('#img-container img').attr('src', image.src).Jcrop({
      aspectRatio: 1,
      boxWidth: width,
      boxHeight: height
    }, function() {
      jcrop_api = this;
    });
  }
}

// 保存裁剪后的图片
function saveImage() {
  var canvas = document.createElement('canvas');
  var img = document.getElementById('crop-image');
  canvas.width = img.width;
  canvas.height = img.height;
  var ctx = canvas.getContext('2d');
  ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, img.width, img.height);
  var base64 = canvas.toDataURL('image/jpeg', 0.5);
  // 在此处调用预览和保存功能
  previewAndSave(base64);
}

// 预览和保存图片
function previewAndSave(base64) {
  var img = document.createElement('img');
  img.src = base64;
  img.onload = function() {
    $('#preview-image img').attr('src', base64);
    $('#preview-modal').modal('show');
  }
  $('#save-btn').click(function() {
    $.ajax({
      url: SAVE_URL, // 保存图片的接口
      type: 'POST',
      data: {
        img: base64
      },
      success: function(res) {
        alert('保存成功');
        $('#preview-modal').modal('hide');
      },
      error: function(err) {
        alert('保存失败');
      }
    })
  })

}

以上是程序的主要代码,具体实现细节详见程序源码。