<input type="file"   onchange="startUpload(this,'front')"  id="renm"/>
<input type="hidden" id="front" name="front"/>

function startUpload(fileId,site){
var this_=$(fileId);
var front;
if(site=='back' || site=='head'){
front=$('#front').val();
if(front.length==0){
layer.msg('请先上传身份证正面照');
return;
}
}
readAsDataURL( fileId,function(img){
this_.prev().attr({src : img});
this_.show();
this_.next().val(img);
});
} /**
* 读取图片为base64数据 返回 base64图片
* @param file 文件
* @param callback 回调函数
*/
function readAsDataURL(fileId,callback){
var file = $(fileId).get(0).files[0];
var reader = new FileReader();
var image = new Image();
var canvas = createCanvas();
var ctx = canvas.getContext("2d");
reader.onload = function(){ // 文件加载完处理
var result = this.result;
image.onload = function(){ // 图片加载完处理
var imgScale = imgScaleW(800,this.width,this.height);
canvas.width = imgScale.width;
canvas.height = imgScale.height;
ctx.drawImage(image,0,0,imgScale.width,imgScale.height);
var dataURL = canvas.toDataURL('image/jpeg'); // 图片base64
ctx.clearRect(0,0,imgScale.width,imgScale.height); // 清除画布
callback (dataURL); //dataURL:处理成功返回的图片base64
};
image.src = result;
};
reader.readAsDataURL(file);
}
/**
* 创建画布
* @returns
*/
function createCanvas(){
var canvas = document.getElementById('canvas');
if(!canvas){
var canvasTag = document.createElement('canvas');
canvasTag.setAttribute('id','canvas');
canvasTag.setAttribute('style','display:none;');//隐藏画布
document.body.appendChild(canvasTag);
canvas = document.getElementById('canvas');
}
return canvas;
}
/**
* 图片压缩
* @param maxWidth 最大宽度或最大高度
* @param width 宽度
* @param height 高度
* @returns {___anonymous1968_1969}
*/
function imgScaleW(maxWidth,width,height){
var imgScale = {};
var w = 0;
var h = 0;
if(width <= maxWidth && height <= maxWidth){ // 如果图片宽高都小于限制的最大值,不用缩放
imgScale = {
width:width,
height:height
};
}else{
if(width >= height){ // 如果图片宽大于高
w = maxWidth;
h = Math.ceil(maxWidth * height / width);
}else{ // 如果图片高大于宽
h = maxWidth;
w = Math.ceil(maxWidth * width / height);
}
imgScale = {
width:w,
height:h
};
}
return imgScale;
}

js上传图片压缩,并转化为base64的更多相关文章

  1. js 图片压缩上传(base64位)以及上传类型分类

    一.input file上传类型 1.指明只需要图片 <input type="file" accept='image/*'> 2.指明需要多张图片 <input ...

  2. JS 上传图片压缩,原比例压缩

    复制 粘贴 改吧改吧就可用,原生js var fileObj = file.file;//原文件 file是我用vue-vant里的组件,里边有file(原文件)和content(base64) 其它 ...

  3. layui中实现上传图片压缩

    一.关于js上传图片压缩的方法,百度有很多种方法,这里我参考修改了一下: function photoCompress(file, w, objDiv) { var ready = new FileR ...

  4. 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器

    使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...

  5. js 上传图片、压缩、旋转

    亲测 <!doctype html> <html> <head> <meta charset="utf-8"> <title& ...

  6. gulpfile.js 合并压缩 requirejs 的配置文件

    var gulp = require("gulp"); // var babel = require("gulp-babel"); // 用于ES6转化ES5 ...

  7. 项目总结13:Jav文件压缩-InputStream转化为base64-Base64解码并生成图片

    Jav文件压缩-InputStream转化为base64-Base64解码并生成图片 直接上源码,解释见文章尾部 package com.hs.common.util.imgecode; import ...

  8. HTML5 Canvas ( 图片绘制 转化为base64 ) drawImage,toDataURL

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 原生 js 上传图片

    js <!doctype html> <html> <head> <meta charset="utf-8"> <title& ...

随机推荐

  1. 网络编程 单纯UDP通信

    网络编程 单纯UDP通信 1,UDP发送端 2,UDP接收端 UDP发送端: #include <stdio.h> #include <unistd.h> #include & ...

  2. python3 shell 中添加清屏

    在windows中: 安装目录 \Lib(  D:\Python37\Lib) 中添加 ClearWindow.py 文件,文件内容: """ Clear Window ...

  3. LeetCode算法题-Second Minimum Node In a Binary Tree(Java实现)

    这是悦乐书的第285次更新,第302篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第153题(顺位题号是671).给定非空的特殊二叉树,其由具有非负值的节点组成,其中该树 ...

  4. GDB调试指南-启动调试

    前言 GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具,可以调试ada, c, c++, asm, minimal, d, fortran, objective-c, ...

  5. 使用PlanViz进行ABAP CDS性能分析

    如管理学学者彼得·德鲁克所说:你无法管理你不能衡量的东西( If you can't measure it, you can't manage it).要对已有程序进行性能优化,首先要对它的运行状况做 ...

  6. .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]

    原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...

  7. Python开发【前端篇】CSS

    1.css基本语法及页面引用 css基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多 ...

  8. git 忽略 .idea文件

    多人开发时,会出现明明在gitignore中忽略了.idea文件夹,但是提交时仍旧会出现.idea内文件变动的情况 原因.idea已经被git跟踪,之后再加入.gitignore后是没有作用的 解决办 ...

  9. 【转】JSON.parse() Unexpected token i in JSON at position 2 报错问题

    JSON.parse(): Unexpected token i in JSON at position 2 报错问题 错误代码: var res = "[{id:1,name:'limin ...

  10. tensorboard 可视化网络运行过程

    在 tf.summary 里设置好要查看保存的参数后运行会生成 events.out.tfevents.{time}.{machine-name} 的文件,这个就是用 tensorboard 来查看的 ...