HTML5联合canvas实现图片压缩

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

nbsp;html>   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实现图片压缩的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3086489.html

(0)
上一篇 2025年3月28日 07:35:16
下一篇 2025年3月11日 21:19:06

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • HTML5实现拖拽功能步骤详解

    这篇文章主要介绍了HTML5实现拖拽功能步骤详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 问题:突然奇想,想在电影网上加一个收藏(类似于购物车的东西),可以通过拖拽图片进行添加 前提:需要了解HTML5中…

    编程技术 2025年3月28日
    100
  • 实例详解Html5的背景应用

    这篇文章主要介绍了浅谈Html5的背景属性,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 1、背景属性复习:background-imagebackground-colorbackground-repeatba…

    2025年3月28日
    100
  • HTML5的video标签操作视频详解

    这次给大家带来HTML5的video标签操作视频详解,HTML5的video标签操作视频的视频有哪些,下面就是实战案例,一起来看一下。 在现在对于网站制作的研究中,各方面的人员使用没有停止过,一直在不停的专研,其中HTML5的使用就是很大的…

    编程技术 2025年3月28日
    100
  • H5+C3+JS实现楼层跳跃特效

    这次给大家带来H5+C3+JS实现楼层跳跃特效,H5+C3+JS实现楼层跳跃特效的注意事项有哪些,下面就是实战案例,一起来看一下。 楼层跳跃式的页面布局 *{ margin: 0; padding: 0; } body, html{ hei…

    编程技术 2025年3月28日
    100
  • HTML5中audio与video标签的使用

    这篇文章主要介绍了关于HTML5中audio与video标签的使用 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近做的微信分享页面中有大量的语音播放和视频展示,相关的好多方法属性以前都没接触过,现在记录下来! 1.  …

    编程技术 2025年3月28日
    100
  • HTML5文本格式化

    这篇文章主要介绍了关于HTML5文本格式化,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 文本格式化:     :加粗文字     :斜体文字     :用于强调,效果和相同     :用于强调,效果和相同。 立即学习“前端…

    编程技术 2025年3月28日
    100
  • HTML5表单相关元素和属性

    这篇文章主要介绍了关于HTML5表单相关元素和属性,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 可以指定id、style、class等核心属性,还可以指定onclick事件属性。除此之外,还可以指定如下几个属性。 acti…

    编程技术 2025年3月28日
    100
  • HTML5 video视频字幕的使用和制作方法

    这篇文章主要介绍了html5 video视频字幕的使用和制作,html5允许我们使用元素为视频指定字幕,需要的朋友可以参考下 HTML5允许我们使用 元素为视频指定字幕。这个元素的各种属性允许我们指定这样的东西,比如我们添加的内容的类型,它…

    编程技术 2025年3月28日
    100
  • H5的video如何实现以及操作弹幕

    这次给大家带来H5的video如何实现以及操作弹幕,H5的video实现与操作弹幕注意事项有哪些,下面就是实战案例,一起来看一下。 HTML5允许我们使用 元素为视频指定字幕。这个元素的各种属性允许我们指定这样的东西,比如我们添加的内容的类…

    编程技术 2025年3月28日
    100
  • H5+canvas卷积核图像处理步骤详解

    这次给大家带来H5+canvas卷积核图像处理步骤详解,H5+canvas卷积核图像处理的图像处理有哪些,下面就是实战案例,一起来看一下。 什么是卷积? 就跳过一些用专业属于描述专业术语看完懵逼的解释了, 语文成绩很差的我尝试从字面解释什么…

    编程技术 2025年3月28日
    100

发表回复

登录后才能评论