HTML5联合canvas实现图片压缩

这次给大家带来html5联合canvas实现图片压缩,主要以代码的形式体现,下面就是实战案例,一起来看一下。

   lianxi           名字: 上传:    var file = document.querySelector('#fileimage') var username = document.querySelector('#username') var canvas = document.createElement('canvas'); var span = document.createElement('span') var formData = new FormData() file.addEventListener('change',function() { //实现的原理的new formData()然后把这个formData 用ajax传进去 span.innerHTML = '预览图加载中...' document.body.appendChild(span) console.log(file.files[0]) username.value ? formData.append('username',username.value) : null; resize(file.files[0]); }) //上传前的图片压缩 function resize(file) { var reader = new FileReader() reader.readAsDataURL(file) var img = new Image() reader.onload = function (e) { // this.result就是图片的base64地址信息 img.src = this.result; }  var context = canvas.getContext('2d'); var gif = document.createElement('img')  // base64地址图片加载完毕后 img.onload = function () { // 图片原始尺寸 //定义画布的大小 if (img.width > 300 || img.height > 300) { if (img.width > img.height) { canvas.width = 300 canvas.height = img.height / img.width * 300 } else { canvas.height = 300 canvas.width = img.width / img.height * 300 } } //从那里开始截取图片 context.drawImage(img, 0, 0, canvas.width, canvas.height) /*第一个参数是创建的img对象;第二个参数是左上角坐标,后面两个是画布区域宽高*/ //压缩后的图片base64 url                /*canvas.toDataURL(mimeType, qualityArgument),mimeType 默认值是'image/jpeg';                 * qualityArgument表示导出的图片质量,只要导出为jpg和webp格式的时候此参数才有效果,默认值是0.92*/ //var newUrl = canvas.toDataURL('image/jpeg', 0.92);//base64 格式 document.body.removeChild(span) document.querySelector('body').appendChild(canvas) }; } //这是上传的 document.querySelector('button').addEventListener('click',function(){ canvas.toBlob(function(blob){ var xhr = new XMLHttpRequest() formData.append('fileimage', blob,'002.webp') xhr.open('POST', 'test.php', true)//默认true 为异步 //上传进度 xhr.upload.addEventListener('progress',function (e) { console.log('上传进度为:'+ (e.loaded/e.total*100).toFixed(2)+'%')//多次出现 // event.total是需要传输的总字节,event.loaded是已经传输的字节 }) xhr.upload.addEventListener('loadstart', function () { console.log('上传开始')//只出现一次 }) xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status >= 200 && xhr.status <300 || xhr.status == 304) { console.log(JSON.parse(xhr.responseText))//成功后的返回值 } else { console.log("Request was unsuccessful: " + xhr.status); }  }  } //xhr.setRequestHeader("Content-type", "multipart/form-data"); xhr.send(formData) }, 'image/webp',0.9) }) 

需要注意的是后端需要加上header(“Access-Control-Allow-Origin:*”);以实现跨域

相关链接:

html5+canvas实现图片的压缩上传

HTML5 Canvas 实现本地压缩图片

立即学习“前端免费学习笔记(深入)”;

HTML5 canvas实现图片拉伸、压缩与裁剪

以上就是HTML5联合canvas实现图片压缩的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1545957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 17:42:43
下一篇 2025年12月21日 17:42:53

相关推荐

  • HTML5之网页存储

    这次给大家带来HTML5之网页存储 ,HTML5之网页存储 的注意事项有哪些,下面就是实战案例,一起来看一下。 html5 网页存储 web storage 一、认识Web Storage Web Storage是一种将少量数据存储在客户端(client)磁盘的技术。只要支持WebStorage A…

    2025年12月21日
    000
  • html5 viewport总结讲述

    本篇文章是关于HTML5中的viewport的一个讲述,对于HTML5中viewport不太熟悉的同学,我们可以一起看看本篇文章!来详细的了解一下html5中的viewport 总结下来无非围绕三个问题: 1、为什么要设置虚拟窗口 起初是为了使得虚拟窗口的分辨率和pc端接近,这样虚拟窗口依然能够完整…

    好文分享 2025年12月21日
    000
  • 讲讲HTML5中被废弃的标签

    本篇文章讲述了HTML5中被废弃的标签,大家对HTML5中被废弃的标签不了解的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧!切记废弃的html标签最好不要使用哦! 在笔试或者面试中常常会遇到html5新标准的问题,下面是总结的html5废弃标签。 第一类:表现性元素 basefont …

    好文分享 2025年12月21日
    000
  • 了解一下HTML5中新增加的标签

     本篇文章讲述了HTML5中新增加的标签,大家对HTML5中新增加的标签不了解的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧! 在笔试或者面试中常常会遇到html5新标准的问题,如新增了哪些新标签,api,或者干脆问新增了哪些新特性,下面是总结的html5新增标签。 html5中新增标…

    好文分享 2025年12月21日
    000
  • 企业开发中使用H5有哪些注意事项

    这次给大家带来企业开发中使用h5有哪些注意事项,企业开发中使用h5的注意事项有哪些,下面就是实战案例,一起来看一下。 3在企业开发中,想让多个盒子的顶部对齐,我们可以让多个盒子同时浮动;或者通过定位微调,使他们顶部对齐;2.去掉控件系统自带的边框 :border:none;3.在企业开发中,css中…

    好文分享 2025年12月21日
    000
  • H5中的定位

    这次给大家带来h5中的定位,h5中定位的注意事项有哪些,下面就是实战案例,一起来看一下。 一.定位流分类 1.1相对定位1.2绝对定位1.3固定定位1.4静态定位 二.什么是相对定位? 相对定位就是相对于自己以前在标准流中的位置来移动position: relative; 相对定位注意点 1.相对定…

    好文分享 2025年12月21日
    000
  • HTML5中form表单标签用法详解

    本文主要和大家分享HTML5中form表单标签用法详解,会以代码实例来和大家分享form的用法,希望能帮助到大家。 语法: 结束,表单都必须放在其之间。   2.method 传送方式,  get/post  是后端程序员考虑的问题   3.action  浏览者输入的数据被传送到的地方,比如一个p…

    好文分享 2025年12月21日
    000
  • HTML5 Canvas的交互式地铁线路图实现代码

    地图稍微内容有点多,要全部展示,字显得有点小了,但是没关系,可以按照需求放大缩小,字体和绘制的内容并不会失真,毕竟都是用矢量绘制的~ 界面生成 底层的 p 是通过 ht.graph.GraphView 组件生成的,然后就可以利用 HT for Web 提供好的方法,调用 canvas 画笔随便绘制就…

    2025年12月21日
    000
  • H5中meta标签及作用

    本文主要和大家分享h5中meta标签及作用,希望能帮助到大家。 H5标准声明,使用 HTML5 doctype,不区分大小写 // 标准的 lang 属性写法 // 声明文档使用的字符编码 // 优先使用 IE 最新版本和 Chrome // 页面描述 // 页面关键词 // 网页作者 // 搜索引…

    好文分享 2025年12月21日
    000
  • MUI框架使用HTML5实现二维码扫描功能

    一、简介         Barcode模块管理条码扫描,提供常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过plus.barcode可获取条码码管理对象。 二、实现的效果 三、实现 代码 立即学习“前端免费学习笔记(深入)”; #bcid{ width…

    2025年12月21日
    000
  • canvas中使用clip()函数裁剪方法

    在canvas中,可以使用clip()函数裁剪区域,设定裁剪区域后,只有在区域内的图像才能显示,其余部分会被屏蔽掉。本文主要和大家介绍了canvas裁剪clip()函数的具体使用的相关资料,希望能帮助到大家。 未使用裁剪绘制一个圆 *{margin:0; padding:0;} html, body…

    2025年12月21日 好文分享
    000
  • html canvas截取圆角图片的实现方法

    以前我们只能通过其他的截图工具来截取图像。现代浏览器的功能已经越来越强,随着h5的逐渐普及,浏览器本身就可以截图啦。html2canvas就是这样一款前端插件,它的原理是将dom节点在canvas里边画出来。虽然很方便,但有以下限制: 本文主要介绍html2canvas截图不能截取圆角图片的解决方案…

    2025年12月21日
    000
  • h5和c3怎样做出太阳系行星运转的动画效果

    这次给大家带来h5和c3怎样做出太阳系行星运转的动画效果,用h5和c3做出太阳系行星运转动画效果的注意事项有哪些,下面就是实战案例,一起来看一下。 做一个太阳系八大行星的运转动画,不包括行星的卫星,所有行星围绕太阳公转,行星采用纯色,暂时没有自转。 动画中包括:太阳及各行星,运行轨道,行星公转动画。…

    好文分享 2025年12月21日
    000
  • h5怎样实现输入框提示语+正常文本框提示语

    这次给大家带来h5怎样实现输入框提示语+正常文本框提示语,实现h5的输入框提示语+正常文本框提示语的注意事项有哪些,下面就是实战案例,一起来看一下。 placeholder=”  请输入用户名/手机号”; html5输入框提示语。 相信看了这些案例你已经掌握了方法,更多精彩请…

    好文分享 2025年12月21日
    000
  • h5的定时器怎样实现进度条功能

    这次给大家带来h5的定时器怎样实现进度条功能,h5的定时器实现进度条功能的注意事项有哪些,下面就是实战案例,一起来看一下。 在requestAnimationFrame出现之前,我们一般都用setTimeout和setInterval,那么html5为什么新增一个requestAnimationFr…

    好文分享 2025年12月21日
    000
  • 在Canvas中如何实现自定义路径动画?

    这次给大家带来在canvas中如何实现自定义路径动画?,canvas实现自定义路径动画的注意事项有哪些,下面就是实战案例,一起来看一下。 在最近的项目中笔者需要做一个新需求:在canvas中实现自定义的路径动画。这里所谓的自定义路径不单单包括一条直线,也许是多条直线的运动组合,甚至还包含了贝塞尔曲线…

    好文分享 2025年12月21日
    000
  • 怎样用H5预览PDF格式的文档

    这次给大家带来怎样用h5预览pdf格式的文档,h5预览pdf格式文档的注意事项有哪些,下面就是实战案例,一起来看一下。 简介 PDF.js is a Portable Document Format (PDF) viewer that is built with HTML5. PDF.js is c…

    好文分享 2025年12月21日
    000
  • H5的拖放应该如何实现

    这次给大家带来h5的拖放应该如何实现,实现h5拖放效果应该的注意事项有哪些,下面就是实战案例,一起来看一下。 简介 拖放是一种常见的特性,即抓取对象以后拖到另一个位置。 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。 先点击一个小例子:在用户开始拖动 元素时执行 JavaScript …

    好文分享 2025年12月21日
    000
  • H5的页面中怎样调用APP功能

    这次给大家带来h5的页面中怎样调用app功能,在h5的页面中调用app功能的注意事项有哪些,下面就是实战案例,一起来看一下。 在市面上经常见到这种功能现如今应该非常普遍了,淘宝H5,知乎H5等等。。。 点击后会调起APP或者打开下载页面或者直接进行下载。 但是我这里发现知乎的这个功能有点不一样 他的…

    好文分享 2025年12月21日
    000
  • h5怎样通过canvas来实现滚动弹幕功能

    这次给大家带来h5怎样通过canvas来实现滚动弹幕功能,通过canvas实现滚动弹幕功能的注意事项有哪些,下面就是实战案例,一起来看一下。 最近在着手开发弹幕视频网站,通过html5中的canvas实现了弹幕的功能。 那么闲言碎语不要讲,先说思路后上代码。 思路:从页面布局上来说就是将一块画布覆盖…

    好文分享 2025年12月21日
    000

发表回复

登录后才能评论
关注微信