千家信息网

在html中如何压缩图片和制作卡片

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要介绍"在html中如何压缩图片和制作卡片"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"在html中如何压缩图片和制作卡片"文章能帮助大家解决问题。
千家信息网最后更新 2025年02月04日在html中如何压缩图片和制作卡片

这篇文章主要介绍"在html中如何压缩图片和制作卡片"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"在html中如何压缩图片和制作卡片"文章能帮助大家解决问题。

使用canvas压缩图片

在 html 中使用写入input标签,typefile时候,可以调出手机的相册可供选择照片,也可以支持摄像头进行拍照功能。在这个场景下,就可能出现图片的体积会更大,可能会超出后端所支持的最大范围,从而导致上传失败。

1.首先要先获取到图片文件

var eleFile = document.querySelector('#file');  var reader = new FileReader()  eleFile.addEventListener('change', function (event) {    file = event.target.files[0];    console.log(file)    // 选择的文件是图片    if (file.type.indexOf("image") == 0) {      reader.readAsDataURL(file);        }  });

2.这个时候就取到了图片文件,就不得不了解一下js中FileReader对象的使用了

FileReader对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容

方法:

方法名参数描述
abortnone中断读取
readAsBinaryStringfile二进制码
readAsDataURLfile将文件读取为 DataURL
readAsTextfile, [encoding]将文件读取为文本
  • readAsText:该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。

  • readAsBinaryString:该方法将文件读取为二进制字符串,通常我们将它传送到后端,后端可以通过这段字符串存储文件。

  • readAsDataURL:这是例子程序中用到的方法,该方法将文件读取为一段以 data: 开头的字符串,这段字符串的实质就是 Data URL,Data URL是一种将小文件直接嵌入文档的方案。这里的小文件通常是指图像与 html 等格式的文件。(其中base64的方式就是由此来获得的。。)

FileReader处理事件简介

事件描述
onabort中断时触发
onerroronabort
onload文件读取成功完成时触发
onloadend读取完成触发,无论成功或失败
onloadstart读取开始时触发
onprogress读取中

继续上面的操作,在拿到图片之后,需要将文件进行处理转化,此时

var reader = new FileReader(); //将文件以Data URL形式读入页面   reader.readAsDataURL(file);   reader.onload=function(e) {     console.log(reader)  }

现在取到了图片也进行了转化,现在可以进行压缩了。

var eleFile = document.querySelector('#file');  var reader = new FileReader()  eleFile.addEventListener('change', function (event) {    file = event.target.files[0];    // console.log(file)    // 选择的文件是图片    if (file.type.indexOf("image") == 0) {      var reader = new FileReader();       //将文件以Data URL形式读入页面         reader.readAsDataURL(file);         reader.onload=function(e) {           // console.log(this.result)          var pre=document.getElementById("pre");           pre.setAttribute("src", this.result)          canvasDataURL(this.result, 100, 0.5)        }         }  })  /* [canvasDataURL    通过canvas进行压缩]   * @params path  图片的base64的格式   * @params targetWidth  压缩后图片的宽度     * @params quality 图片质量  quality值越小,所绘制出的图像越模糊   */  function canvasDataURL(path, targetWidth, quality) {    var img = new Image();    img.src = path    img.onload = function () {        // var that = this        // console.log(that)        // 默认按比例压缩        var w = this.width        var h = this.height        scale = w / h;        w = targetWidth        h = targetWidth / scale        var quality = quality;  // 默认图片质量为0.7        //生成canvas        var canvas = document.createElement('canvas');        var ctx = canvas.getContext('2d');        // 创建属性节点        var anw = document.createAttribute("width");        anw.nodeValue = w;        var anh = document.createAttribute("height");        anh.nodeValue = h;        canvas.setAttributeNode(anw);        canvas.setAttributeNode(anh);        ctx.drawImage(this, 0, 0, w, h);        // quality值越小,所绘制出的图像越模糊        var base64 = canvas.toDataURL('image/jpeg', quality);        var result=document.getElementById("result");         result.setAttribute("src", base64)    }  }

很简单,这样就可以得到压缩后的图片了,从以上的代码可得知,原理在于canvas 中的 toDataURL 方法可指定图片压缩后的格式及压缩质量,把 canvas 信息压缩并转为 base64 编码来实现压缩。

使用canvas制作卡片

场景:把刚刚压缩之后的图片与另一张图片相结合,可长按进行保存。

function drawCanvas (target) {    var canvas = document.querySelector('#myCanvas')    var ctx = canvas.getContext('2d')    // 是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例    var dp = window.devicePixelRatio || 1    var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1    var ratio = this.dp / this.backingStoreRatio    var oldWidth = canvas.width    var oldHeight = canvas.height    canvas.width = oldWidth * ratio    canvas.height = oldHeight * ratio    canvas.style.width = oldWidth + 'px'    canvas.style.height = oldHeight + 'px'    ctx.scale(ratio, ratio)    var headerImg = new Image()    var bgImg = new Image()    headerImg.src = target    bgImg.src = '../bg.png'    headerImg.onload = (e) => {      // 图片的宽高比      var rate = headerImg.width / headerImg.height      console.log(rate)      bgImg.onload = (e) => {        ctx.drawImage(headerImg, 10, 30, 50, (50 / rate))        // 背景图片        ctx.drawImage(bgImg, 0, 0, 150, 150)        ctx.fillText('厉害啊', 80, 70)        var resultImg = new Image()        resultImg.src = canvas.toDataURL('image/png', 1)        resultImg.style.width = '100%'        var cardImg=document.getElementById("cardImg");         cardImg.setAttribute("src", resultImg.src)      }    }

取到刚刚得到的图片,在图像装载完毕时后将其画到画布上,也可以配上文字等等,最后也是把canvas的信息转为base64编码来进行实现 。

关于"在html中如何压缩图片和制作卡片"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

图片 文件 方法 卡片 制作 图像 字符 字符串 文本 内容 参数 方式 格式 知识 编码 质量 选择 成功 事件 二进制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 银联用的数据库工具 安徽大数据软件开发报价 韶关自主可控软件开发零售价 移动办公应用网络安全域 海康存储服务器管理口地址 影咖服务器系统修复命令 内存数据库的意义 大数据网络安全应用 360服务器怎样调整极速模式 图数据库选用 软件开发心理测试怎样算正常 湖工大网络技术专业 广西友邦永信网络技术有限公司 电脑怎么找到内网服务器 微信crm系统数据库 表格连接orcal数据库 武软的软件开发怎样 东莞市美送网络技术有限公司 福建通讯软件开发设施价格优惠 宝山区运营软件开发价格走势 连接至更新服务器 廊坊市易网无线网络技术有限公司 庆阳市公安局开展网络安全 2年级网络安全手抄报内容 广州力天互联网科技有限公司 数据库课程人事管理系统设计 上海多样性数据库 网络安全资格证书在哪考 服务器磁盘配置在哪 怎样查询服务器raid格式
0