美文网首页
canvas大图压缩处理

canvas大图压缩处理

作者: 五道杠_9225 | 来源:发表于2020-04-02 11:00 被阅读0次

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <!-- import CSS -->

    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">

</head>

<body>

    <div id="app">

        <van-uploader :after-read="afterRead" />

        <img :src="img" alt="">

    </div>

</body>

<!-- import Vue before Element -->

<script src="https://unpkg.com/vue/dist/vue.js"></script>

<!-- import JavaScript -->

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>

<script src="https://cdn.jsdelivr.net/npm/vant@2.5/lib/vant.min.js"></script>

<script>

    new Vue({

        el: '#app',

        data: function () {

            return { 

                visible: false,

                img:'' 

                }

        },

        methods: {

            dataURLtoFile(dataurl, filename) { // 将base64转换为file文件

            // debugger

                let arr = dataurl.split(',')

                let mime = arr[0].match(/:(.*?);/)[1]

                let bstr = atob(arr[1])

                let n = bstr.length

                let u8arr = new Uint8Array(n)

                while (n--) {

                    u8arr[n] = bstr.charCodeAt(n)

                }

                return new File([u8arr], filename, { type: mime })

            },

            afterRead(file) {

                // 此时可以自行将文件上传至服务器

                console.log(file);

                let canvas = document.createElement('canvas')

                // 获取对应的CanvasRenderingContext2D对象(画笔)

                let context = canvas.getContext('2d')

                // 创建新的图片对象 

                let img = new Image()

                // 指定图片的DataURL(图片的base64编码数据)

                img.src = file.content

                // 监听浏览器加载图片完成,然后进行进行绘制

                img.onload = () => {

                    canvas.width = 400

                    canvas.height = 300

                    context.drawImage(img, 0, 0, 400, 300)

                    this.img=file.content = canvas.toDataURL(file.file.type, 0.92) // 0.92为默认压缩质量

                    let files = this.dataURLtoFile(file.content, file.file.name)

                    console.log(files);

                }

            }

        }

    })

</script>

</html>


相关文章

  • canvas大图压缩处理

  • Canvas与图片压缩

    之前写过一篇有关Canvas图片处理的文章,今天我们讲讲如何使用Canvas来压缩图片。 接下来我将以具体实例为大...

  • 客户端图片压缩及上传

    技术要点 FileReader去读取图片 使用canvas的API去压缩 buffer处理后上传 HTML JS(...

  • 前端使用canvas对图片进行压缩

    纯前端对图片压缩 纯前端因为可以调用FileReader和canvas接口,在图片压缩方面非常便捷.思路就是获取图...

  • canvas图表(1) - 柱状图

      原文地址:canvas图表(1) - 柱状图  图表一般使用到svg或canvas,其中canvas图表在处理...

  • 使用antd进行头像压缩

    重要的事情说三遍canvas只支持jpg图片压缩,canvas只支持jpg图片压缩,canvas只支持jpg图片压...

  • canvas截图 base64ToFile

    说明 1、前端处理图片就是用canvas来做一个截图压缩的操作,上传后台要file文件,所以需要处理一下 代码

  • 资源收集

    图片压缩处理智图 https://zhitu.isux.us/熊猫压缩 https://tinypng.com/...

  • 前端图片压缩Canvas

    ?‍?图片压缩Canvas #关于如何实现压缩 查阅MDN找到的是这个API: HTMLCanvasElement...

  • 前端压缩图片

    原理:图片文件转换成canvas,例用canvas的quality压缩图片,再将canvas转成文件后上传 原文链...

网友评论

      本文标题:canvas大图压缩处理

      本文链接:https://www.haomeiwen.com/subject/rpntphtx.html