最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

js如何实现将上传图片并且压缩的方法

来源:懂视网 责编:小采 时间:2020-11-27 19:33:27
文档

js如何实现将上传图片并且压缩的方法

js如何实现将上传图片并且压缩的方法:这篇文章给大家介绍的内容是关于js上传图片压缩,有着一定的参考价值,有需要的朋友可以参考一下。js实现图片压缩后上传用到的技术:canvas相关apihtml5的一些api兼容性:h5没发现问题,pc低版本浏览器不支持实现思路:监听文件域的上传,通过FileReade
推荐度:
导读js如何实现将上传图片并且压缩的方法:这篇文章给大家介绍的内容是关于js上传图片压缩,有着一定的参考价值,有需要的朋友可以参考一下。js实现图片压缩后上传用到的技术:canvas相关apihtml5的一些api兼容性:h5没发现问题,pc低版本浏览器不支持实现思路:监听文件域的上传,通过FileReade

这篇文章给大家介绍的内容是关于js上传图片压缩,有着一定的参考价值,有需要的朋友可以参考一下。

js实现图片压缩后上传

用到的技术:

  1. canvas相关api

  2. html5的一些api

兼容性:

h5没发现问题,pc低版本浏览器不支持

实现思路:

  • 监听文件域的上传,通过FileReader api获取到图片的原始数据

  • 计算压缩后的宽高,然后通过画到canvas上在截取出压缩后的数据

  • <!DOCTYPE html>
    <html lang="en">
    
    <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document</title>
    </head>
    
    <body>
     <input type="file" id="file">
     <canvas id="canvas"></canvas>
    </body>
    
    </html>
    <script>
     // 兼容性 h5上可以使用,pc低版本浏览器不支持
     // 准备要用到的img和canvas
     var img = new Image(),
     canvas;
     // 创建读取文件对象
     var render = new FileReader();
     // 如果不需要放在页面上,使用js创建该元素就可以了
     // canvas = document.createElement('canvas');
    
     // 找到canvas,准备画图
     var canvas = document.getElementById('canvas');
     var context = canvas.getContext('2d');
    
     var input = document.getElementById('file');
     input.addEventListener('change', function (e) {
     // 通过files获取到当前文件
     var file = e.target.files[0];
     // 如果选择的是图片
     if (file.type.indexOf('image') != -1) {
     // 读取file文件,得到的
    结果为base64位 render.readAsDataURL(file); }; }); render.onload = function (result) { // 把读取到的base64图片设置给img的src属性 var src = render.result; img.src = src; }; img.onload = function () { // 加载完毕后获取图片的原始尺寸 var origin_width = this.width; var origin_height = this.height; // 设置最大允许宽高,根据需求自己设置,值越大,图片大小越大 var max_width = 400; var max_height = 400; // 最终宽高 var target_width = origin_width; var target_height = origin_height; if (origin_width > max_width || origin_height > max_height) { if (origin_width / origin_height > max_width / max_height) { // 更宽,按照宽度限定尺寸 target_width = max_width; target_height = Math.round(max_width * (origin_height / origin_width)); } else { target_height = max_height; target_width = Math.round(max_height * (origin_width / origin_height)); } } canvas.width = target_width; canvas.height = target_height; // 绘画到画布上 context.drawImage(img, 0, 0, target_width, target_height); /* 此处得到的是blob对象,blob对象是在ie10及以上才兼容,在ios8_1_1上和iphoneSE上有兼容问题 canvas.toBlob(function(result) { console.log(result); }); */ // 读取canvas的数据 var result = canvas.toDataURL(); // 得到的结果是base64位的字符串,拿到压缩后的值通过网络请求交给后台处理... // 如果是blob对象,需要通过FormData对象发送 console.log(result); }; </script>

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    js如何实现将上传图片并且压缩的方法

    js如何实现将上传图片并且压缩的方法:这篇文章给大家介绍的内容是关于js上传图片压缩,有着一定的参考价值,有需要的朋友可以参考一下。js实现图片压缩后上传用到的技术:canvas相关apihtml5的一些api兼容性:h5没发现问题,pc低版本浏览器不支持实现思路:监听文件域的上传,通过FileReade
    推荐度:
    标签: 图片 方法 的方法
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top