HTML5 JS压缩图片并获取图片BASE64编码上传
作者:aC#Coder 发布时间:2024-04-17 10:25:44
标签:HTML5,JS,压缩,上传
本文实例为大家分享了HTML5 JS压缩图片,并获取图片BASE64编码上传的方法,供大家参考,具体内容如下
基本过程
1) 调用 FileReader 的 reader.readAsDataURL(img); 方法, 在其onload事件中, 将用户选择的图片读入 Image对象.
2) 在image对象的 onload 事件中, 通过 canvas 的 canvas.getContext('2d') 的 drawImage 方法, 将Image 改变大小绘制到canvas上.
3) 通过 canvas.toDataURL("image/jpeg", 0.1); 方法, 将图片变成base64字符串, 传入服务端.
var vueImg = new Vue({
el: "#divCarImages",
data: { model: { carId: '@carId', imageTitle:'',img64:'' }, images: [] },
methods: {
imageHandle: function () {
var fup = $("#fileImg")[0];
var img = fup.files[0];
var image = new Image();
var canvas = $("#canvas")[0];//document.createElement("canvas");
var ctx = canvas.getContext('2d');
image.onload = function () {
var w = image.naturalWidth,
h = image.naturalHeight;
var toSize = 400;
canvas.width = toSize;
canvas.height = toSize;
var w2 = toSize, h2 = toSize;
if (w > h) {
h2 = h / w * toSize;
} else {
w2 = w / h * toSize;
}
ctx.drawImage(image, 0, 0, w, h, 0, 0, w2, h2);
}
// 判断是否图片
if (!img) {
return;
}
// 判断图片格式
if (!(img.type.indexOf('image') == 0 && img.type && /\.(?:jpg|png|gif)$/.test(img.name))) {
alert('图片只能是jpg,gif,png');
return;
}
var reader = new FileReader();
reader.onload = function (e) { // reader onload start
var url = reader.result;
image.src = url;
} // reader onload end
reader.readAsDataURL(img);
}
}
});
function uploadImg() {
var canvas = $("#canvas")[0];
vueImg.model.img64 = canvas.toDataURL("image/jpeg", 0.1);
//$("#testMsg").html(imgData.length);
// ajax 上传图片
$.post("@Url.Content("~/AliOss/SaveCarImage")", vueImg.model , function (ret) {
parseAjaxData(data, function (model) {
console.log(model.Path);
alert(model.Path);
$('#showimg').html('<img src="' + model.Path + '">');
})
}, 'json');
}


猜你喜欢
- 在使用django的modelform的时候,修改表单,图片在form表单显示的是一个链接。显示缩略图如下第一步:from django.f
- 本文是对pandas官方网站上《10Minutes to pandas》的一个简单的翻译,原文在这里。这篇文章是对pandas的一个简单的介
- 故障描述percona5.6,mysqldump全备份,导入备份数据时报错Duplicate entry 'hoc_log99-it
- 大家都知道,数据库的安全性是很重要的,它直接影响到数据库的广泛应用。用户可以采用任意一种方法来保护数据库应用程序,也可以将几种方法结合起来使
- 相关介绍Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动
- Jupyter Notebook是一个基于浏览器的交互式编程环境(REPL, read eval print loop),它主要构建在IPy
- df.groupby() 之后按照特定顺序输出,方便后续作图,或者跟其他df对比作图。## 构造 pd.DataFramepatient_i
- 一开始用Firefox加Firebug/YSlow插件分析,但是firefox不能运行自定义的javascript,好像还要装什么插件。于是
- 首先下载 MySQLdb #encoding=GBK import MySQLdb #import sys # #reload(sys) #
- 本文实例为大家分享了python实现抖音视频批量下载的具体代码,供大家参考,具体内容如下这里就拿最近很火的抖音视频为例,利用API来实现用户
- 本文实例为大家分享了原生js实现tab选项卡切换效果的代码,供大家参考,具体内容如下1.html部分<body> <div
- 锁是指在某组资源中,两个或两个以上的线程在执行过程中,在争夺某一资源时而造成互相等待的现象,若无外力的作用下,它们都将无法推进下去,死时就可
- 一、前言确保安装scikit-imagenumpy二、Dataset一个例子:# 导入需要的包import torchimport torc
- 本文实例总结了CI框架中数据库操作函数$this->db->where()相关用法。分享给大家供大家参考,具体如下:CI 框架数
- 主键的生成方式主要有三种: 一. 数据库自动生成 二. GUID 三. 开发创建 严格讲这三种产生方式有一定的交叉点,其定位方式将在下面进行
- PyQt中的线程类 QtCore.QThread ,使用时继承QThread类启动界面的线程暂称为UI线程。界面执行命令时都在自己的UI线程
- mysql5.7版本:方法1: 用SET PASSWORD命令 格式:mysql> set password f
- 最近在玩一个叫Baba is you的游戏,很羡慕里面的一个转场特效,所以试着做了一下。主要使用了JS和CSS,特效主要是用CSS实现的。H
- 简介Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的。2007年由4名Goo
- 在我们平时项目刚启动时,由于后台也是刚开始开发,我们前端往往在开发过程中没有数据和接口请求的,都要造一些假数据进去或者使用mock造一些数据