element-ui 图片压缩上传功能实现

 更新时间:2023年10月24日 11:40:17   作者:黑白两客  
这篇文章主要介绍了element-ui 图片压缩上传功能实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

element-ui 图片压缩上传

 
export const compressImgNew = (file) => {
  return new Promise(resolve => {
    const reader = new FileReader()
    const image = new Image()
    image.onload = (imageEvent) => {
      const canvas = document.createElement('canvas') // 创建画布
      const context = canvas.getContext('2d')         // 画布为2d
      // const width = image.width / 1.05        // 图片宽度 / 压缩比例
      // const height = image.height / 1.05        // 图片高度 / 压缩比例
      const width = image.width / 3       // 图片宽度 / 压缩比例
      const height = image.height / 3       // 图片高度 / 压缩比例
      canvas.width = width                            // 画布宽度
      canvas.height = height                          // 画布宽度
      context.clearRect(0, 0, width, height)
      context.drawImage(image, 0, 0, width, height)
      const dataUrl = canvas.toDataURL(file.type)     //图片转路径
      const blobData = dataURLtoBlob(dataUrl, file.type) //图片转二进制
      resolve(blobData)
    }
    reader.onload = e => { image.src = e.target.result }
    reader.readAsDataURL(file)
  })
};
 
//图片转二进制
function dataURLtoBlob(dataURL, type) {
  var binary = atob(dataURL.split(',')[1])
  var array = []
  for (var i = 0; i < binary.length; i++) {
    array.push(binary.charCodeAt(i))
  }
  return new Blob([new Uint8Array(array)], { type: type })
}
 

使用

import { compressImgNew } from “@/assets/js/picture.js”;

    beforeAvatarUpload(file) {
      let types = [
        "image/jpeg",
        "image/jpg",
        "image/png"
      ];
      const isImage = types.includes(file.type);
      const isLtSize = file.size / 1024 / 1024 < 5;
      if (!isImage) {
        this.$message.warning("上传图片只能是 JPG、JPEG、PNG 格式!");
        return false;
      }
      if (!isLtSize) {
        this.$message.warning("上传图片大小不能超过 5MB!");
        return false;
      }
      return compressImgNew(file);
    },

到此这篇关于element-ui 图片压缩上传的文章就介绍到这了,更多相关element-ui 图片上传内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简单了解three.js 着色器材质

    简单了解three.js 着色器材质

    这篇文章主要介绍了three.js 着色器材质的相关资料,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)

    JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)

    JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • ECharts异步加载数据与数据集(dataset)

    ECharts异步加载数据与数据集(dataset)

    这篇文章介绍了ECharts异步加载数据与数据集(dataset),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 用js编写留言板

    用js编写留言板

    这篇文章主要为大家详细介绍了用js编写留言板,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • JS实现简洁、全兼容的拖动层实例

    JS实现简洁、全兼容的拖动层实例

    这篇文章主要介绍了JS实现简洁、全兼容的拖动层的方法,实例分析了javascript鼠标事件及页面元素的操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • JavaScript实现全选或反选功能

    JavaScript实现全选或反选功能

    这篇文章主要为大家详细介绍了JavaScript实现全选或反选功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Javascript 实现 Excel 导入生成图表功能

    Javascript 实现 Excel 导入生成图表功能

    这篇文章主要介绍了Javascript 实现 Excel 导入生成图表功能,本文通过实例代码讲解给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • 一行JavaScript代码如何实现瀑布流布局

    一行JavaScript代码如何实现瀑布流布局

    这篇文章主要给大家介绍了如何通过一行JavaScript代码实现瀑布流布局的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • "好玩的放大镜效果" 的另一种实现方法

    "好玩的放大镜效果" 的另一种实现方法

    "好玩的放大镜效果" 的另一种实现方法...
    2006-11-11
  • JS用最简单的方法实现四舍五入

    JS用最简单的方法实现四舍五入

    在本篇文章里小编给大家整理的是关于JS用最简单的方法实现四舍五入的实例内容,需要的朋友们学习下。
    2019-08-08

最新评论