我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue.js实现图片压缩封装方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue.js实现图片压缩封装方法

全局main.js引入:

// 引入imgUpload方法
import * as imgUpload from "./utils/imgUpload"
//外部使用
Vue.prototype.$imgUpload = imgUpload

新建imgUpload.js:

 const dataURLtoFile = (dataurl, filename) => { // 将base64转换为file文件
    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 })
};
const imgZip = (file) => {
    var _this = this;
    let imgZipStatus = new Promise((resolve, reject) => {
        let canvas = document.createElement("canvas"); // 创建Canvas对象(画布)
        let context = canvas.getContext("2d");
        let img = new Image();
        img.class="lazy" data-src = file.content; // 指定图片的DataURL(图片的base64编码数据)
        var Orientation = '';
        img.onload = () => {
            //根据情况定义
           // canvas.width = 400;
           // canvas.height = 300;
           canvas.width = img.width;
           canvas.height = img.height;
           context.drawImage(img, 0, 0, canvas.width, canvas.height);
 
           file.content = canvas.toDataURL(file.file.type, 0.5); // 0.92为默认压缩质量
            
           let files = dataURLtoFile(file.content, file.file.name);
           resolve(files)
        }
    })
    return imgZipStatus;
};
export {
    imgZip,
}

页面中使用:

//上传方法
afterCard(file) {
      this.$imgUpload.imgZip(file).then(resData => {
        const formData = new FormData();
        formData.append("file", resData);
 
        // 请求接口上传图片到服务器
        uploadImg(formData).then(res => {
 
        })
      })
}

备注:

HTMLCanvasElement.getContext()方法返回canvas的上下文,如果上下文没有定义则返回null.

在同一个canvas上以相同的contextType多次调用此方法只会返回同一个上下文。

var ctx = canvas.getContext(contextType);var ctx = canvas.getContext(contextType, contextAttributes);

上下文类型(contextType)

是一个指示使用何种上下文,可能的值是:

  • "2d"
  • "webgl"
  • "webgl2"
  • "bitmaprenderer"

上下文属性(contextAttributes)

你可以在创建渲染上下文的时候设置多个属性,例如:

canvas.getContext("webgl",
                 { antialias: false,
                   depth: false });

Canvas 2D API 中的CanvasRenderingContext2D.drawImage()方法提供了多种方式在Canvas上绘制图像。

ctx.drawImage(image, dx, dy);
ctx.drawImage(image, dx, dy, dWidth, dHeight);
ctx.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);

参数:

image

绘制到上下文的元素。允许任何的 canvas 图像源

sx可选

需要绘制到目标上下文中的,image的矩形(裁剪)选择框的左上角 X 轴坐标。

sy可选

需要绘制到目标上下文中的,image的矩形(裁剪)选择框的左上角 Y 轴坐标。

sWidth可选

需要绘制到目标上下文中的,image的矩形(裁剪)选择框的宽度。如果不说明,整个矩形(裁剪)从坐标的sxsy开始,到image的右下角结束。

sHeight可选

需要绘制到目标上下文中的,image的矩形(裁剪)选择框的高度。

dx

image的左上角在目标canvas上X 轴坐标。

dy

image的左上角在目标canvas上Y 轴坐标。

dWidth可选

image在目标canvas上绘制的宽度。 允许对绘制的image进行缩放。 如果不说明, 在绘制时image宽度不会缩放。

dHeight可选

image在目标canvas上绘制的高度。允许对绘制的image进行缩放。 如果不说明, 在绘制时image高度不会缩放。

示例:

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var image = document.getElementById('source');
ctx.drawImage(image, 33, 71, 104, 124, 21, 20, 87, 104);

Vue vant-ui使用van-uploader实现头像图片上传

https://www.jb51.net/article/248830.htm

到此这篇关于vue js实现图片压缩封装方法的文章就介绍到这了,更多相关vuejs图片压缩内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue.js实现图片压缩封装方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue与js中如何实现图片压缩封装

这篇文章主要介绍“vue与js中如何实现图片压缩封装”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue与js中如何实现图片压缩封装”文章能帮助大家解决问题。全局main.js引入:// 引入img
2023-06-30

Android实现简单图片压缩的方法

本文实例讲述了Android实现简单图片压缩的方法。分享给大家供大家参考,具体如下: 在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的
2022-06-06

Android实现图片压缩(bitmap的六种压缩方式)

Android中图片是以bitmap形式存在的,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式: 图片长度 x 图片宽度 x 一个像素点占用的字节数 以下是图片的压缩格式:其中,A代表透明
2022-06-06

怎么使用Canvas drawImage方法实现图片压缩

使用Canvas的drawImage方法可以实现图片的压缩。下面是一个简单的示例代码:// 获取原始的图片对象var img = new Image();img.src = '原始图片路径';// 创建一个Canv
怎么使用Canvas drawImage方法实现图片压缩
2024-03-02

android图片压缩的3种方法实例

android 图片压缩方法: 第一:质量压缩法:代码如下:private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new Byte
2022-06-06

JavaScript实现图像压缩的方法

使用JavaScript和canvas压缩图像可以使用canvas的drawImage()方法将图像绘制到canvas上,然后使用toDataURL()方法将图像转换为DataURL形式,这篇文章主要介绍了JavaScript图像压缩的相关资料,需要的朋友可以参考下
2023-01-11

Android应用中实现图片压缩的方法有哪些

这篇文章将为大家详细讲解有关Android应用中实现图片压缩的方法有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android图片压缩几种方式总结图片压缩在Android开发中很常见也
2023-05-31

android编程实现图片库的封装方法

本文实例讲述了android编程实现图片库的封装方法。分享给大家供大家参考,具体如下: 大家在做安卓应用的时候 经常要从网络中获取图片 都是通过URL去获取 可是如果本地有图片数据 从本地获取数据不更加快一些 自己在工作中遇到这个问题 所以
2022-06-06

Android 图片压缩并保存的方法

参考:1.https://blog.csdn.net/pbm863521/article/details/743917872.https://www.jianshu.com/p/871f0c1f0006 1.背景:最近一个项目的开发,需要用
2022-06-06

Android-图片压缩详解:原理、方法与实践

前言1. 图片压缩的原理2. Android图片压缩的方法2.1 BitmapFactory.Options2.1.1 尺寸压缩2.1.2 质量压缩 2.2 第三方库 3. 实践:Android图片压缩3.1 创建
2023-08-18

C#怎么实现无损压缩图片

今天小编给大家分享一下C#怎么实现无损压缩图片的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一般在web应用中,对客户端提交
2023-06-30

Java如何实现压缩图片大小

本篇内容主要讲解“Java如何实现压缩图片大小”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java如何实现压缩图片大小”吧!使用场景:1.当使用图片上传功能时,上传图片太大,造成对服务器资源过
2023-06-30

编程热搜

目录