前端如何压缩图片在进行上传给后端

这篇具有很好参考价值的文章主要介绍了前端如何压缩图片在进行上传给后端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

   前端压缩图片我目前能想到的就是 通过canvas 改变图片的 画质去改变图片的大小。

解决方案如下:
1、首先获取图片的全部内容,然后转化为base64让他可以在页面上展示。
2、当我们获取到base64的图片的时候我们就可以获取图片的大小尺寸。
3、我们把这个图片放置到canvas上面去,然后通过cavans属性drawImg重新获取图片。
4、将重新获取的图片转化为url。

注意注意:当前只支持jpg图片的压缩,因为手机拍出来的图片是jpg图片。这是我的场景需要,如果你是png不建议你用,或者你有更好的方案可以也给我说说~~~

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="btn">上传</div>
</body>

</html>
<script>

    let btn = document.querySelector('.btn');
    class CompressImg {
        fileReader = new FileReader();
        constructor(options) {
            this.options = options;
            this.createBase64();
        }
        createBase64() {
            // console.log(fileRender)
            this.fileReader.onload = (e) => {
                console.log(e.target?.result, '---')
                this.compress(e.target?.result)
            }
            this.fileReader.readAsDataURL(this.options.file);
        }
        compress(url) {
            const img = new Image();
            img.src = url;
            const canvas = document.createElement('canvas');
            const ctx = canvas.getContext('2d');
            ctx.height = img.height;
            ctx.width = img.width;
            img.onload = () => {
                ctx.drawImage(img, 0, 0, img.width, img.height);
                const base = canvas.toDataURL(this.options.file.type, this.options.quality);
                this.options.success(base);

            }
        }
    }

    btn.addEventListener('click', () => {
        showOpenFilePicker().then(async (file) => {
            const files = await file[0].getFile();
            if (files) {
                new CompressImg({
                    file: files,
                    quality: 1,
                    success: (url) => {
                        console.log(url)
                    }
                })
            }
        })
    })
</script>

效果:
前端如何压缩图片在进行上传给后端,前端文章来源地址https://www.toymoban.com/news/detail-804159.html

到了这里,关于前端如何压缩图片在进行上传给后端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 后端如何返回一个(图片)文件流,并在前端vue展示。

    后端部分可分为三步: 1,获取文件参数(非必须,根据自己情况添加) 2,获取文件 3,以流形式返回 具体代码如下: 前端展示部分。 1,首先在你的axios接口上添加 responseType:\\\'blob\\\' ,以表示你将以blob形式接收(必须添加)。 2,拿到接口返回值后,将其转为blob形式 此时打

    2024年02月11日
    浏览(36)
  • 前端上传的文件,后端将如何进行存储以及回显

    完成文件上传这个功能需要涉及到两个部分: 前端程序 服务器程序 文件上传后将如何进行储存 本地磁盘储存 云服务器oss储存 ##后端项目创建 创建springboot工程,引入对应的起步依赖(web、mybatis、mysql驱动、lombok) 配置文件application.properties中引入mybatis的配置信息,准备对应

    2024年02月04日
    浏览(33)
  • 前端vue后端go如何进行跨域设置?一篇就通透理解

    跨域 (Cross-Origin)指的是在 浏览器 中,当一个 web 应用程序试图访问 不同域名、不同端口或不同协议的资源时,就会发生跨域请求 ,此时浏览器的 同源策略 (Same-Origin Policy)就会进行拦截,他是同源策略是一种 安全机制 ,它限制了网页中的 JavaScript 代码只能访问同源(

    2024年04月12日
    浏览(33)
  • 探索前端图片如何携带token进行验证

    图片在前端开发中扮演了重要的角色,它们不仅仅是美观的元素,还可以传递信息和激发用户的兴趣。随着应用场景的增多,前端开发人员就需要在图片加载过程中携带验证的信息。如 token ,用于身份验证、权限控制等方面。通过在图片的 URL 或请求头中携带 token 信息,从而

    2024年02月14日
    浏览(43)
  • 前端调接口下载(导出)后端返回.zip压缩文件流(的坑!)

    前言:基于vue2+element-ui的一个后台管理系统,需求评审要加一个导入导出文件的功能,由于可能导出的数据量过大(几十万条数据),下载时间过长,所以用.zip压缩文件替代excel文件 本人以前也做过导出文件的功能,但是用的方法是后端处理数据然后放到另一个服务器上,前

    2024年02月03日
    浏览(31)
  • 从URL取值传给后端

    点击浏览文章详情,跳转至详情页面 从 url 中拿出文章 id,传给后端 首先拿到url 然后判断是否有值,从问号后面取值 params.split(\\\'\\\') 以 作为分割 然后遍历字符数组 paramArr[i].split(\\\"=\\\") ,又用 =等号 分割键和值 判断 key 和传过来的 key 是否一样,一样就返回该 key 对应的 value 值

    2024年02月14日
    浏览(25)
  • 前端图片压缩解决办法

    在某一h5的项目,要求上传的图片格式为 base64 , 问题是用户上传的图片基本都在MB 级别,转base64 以后,图片的体积会增大30%以上,随着图片的体积增加,转换的base64 格式文件体积越大,如果此时前端不对用户上传的图片体积进行压缩,可能会导致服务器压力过大,从而崩溃

    2024年02月14日
    浏览(25)
  • 使用python对图片进行压缩

    对于图片,强行被定义高和宽会变形,我们希望图片被改变大小后,比例保持不变,完成对图片的压缩。 1.pillow : pip install pillow -i https://pypi.douban.com/simple 2. os : 连接文件,并获取文件夹下的文件名 获取picture文件下的相关图片的路径,将路径放到列表里面进行存储 使用Image模

    2024年02月13日
    浏览(39)
  • 微信小程序中进行图片压缩

    微信小程序中进行图片压缩 问题: 首先在需要进行图片压缩的内容的wxml上,进行使用画布,这画布不能够出现在屏幕上 之后在js中进行内容压缩,重复压缩直至压缩到想要的大小

    2024年02月15日
    浏览(47)
  • 前端 JS 压缩图片的思路(附源码)

    相信大家都做过图片上传相关的功能,在图片上传的过程中,不知道大家有没有考虑过文件体积的问题,如果我们直接将原图片上传,可以图片体积比较大,一是上传速度较慢,二是前端进行渲染时速度也比较慢,比较影响客户的体验感。所以在不影响清晰度的情况下,前端

    2024年04月27日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包