本地上传图片预览

简介: 图片上传本地预览,获得图片的base64(可压缩) .upload_image {  width: 800px; } 点击上传图片 提交 var im...
<!DOCTYPE html >
<html >
<head>     
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     
<title>图片上传本地预览,获得图片的base64(可压缩)</title>     
<style type="text/css">
  .upload_image {
  width: 800px;
} </style> <script type="text/javascript" src="jquery.min.js"></script> </head> <body> <div id="preview"> <img id="imghead" width=200 height=200 border=0 src=''> </div> <canvas id="uploadImg" hidden></canvas> <input type="file" id="fileUp" multiple hidden /> <label for="fileUp">点击上传图片</label> <button id='sub'>提交</button> <script type="text/javascript"> var imgUpload = { imgBase64Arr: [], html : '', onSelect: function(files) { var i =0; $("#preview").html('<div class="upload_loading"></div>'); var funAppendImage = function() { file = files.files[i]; if (file) { var reader = new FileReader() reader.onload = function(e) { imgUpload.html = imgUpload.html + '<div id="uploadList_' + i + '" class="upload_append_list"><p class="img-outbox"><strong>' + file.name + '</strong>' + '<a href="javascript:" class="upload_delete" title="删除" data-index="' + i + '">删除</a><br />' + '<img id="uploadImage_' + i + '" src="' + e.target.result + '" class="upload_image" /></p>' + '<span id="uploadProgress_' + i + '" class="upload_progress"></span>' + '</div>'; i++; funAppendImage(); } reader.readAsDataURL(file); } else { $("#preview").html(imgUpload.html); $(".upload_delete").click(function(){ imgUpload.funDelteimg($(this).parents(".img-outbox")); // console.log(files.files[parseInt($(this).attr("data-index"))]) // imgUpload.funDelteimg(files.files[parseInt($(this).attr("data-index"))]); } ) } }; funAppendImage(); }, funDelteimg: function(_this){ console.log(_this) $(_this).remove();//只能删除dom,无法删除内存中的files.files }, funCanvas : function(width, height, ratio, file){//重新绘制图片,获得img的base64 var canvas = document.getElementById("uploadImg"); var cxt = canvas.getContext('2d'); canvas.width = width; canvas.height = height; var img = new Image(); img.src = file; cxt.drawImage(img, 0, 0, width, height); var imgBase = canvas.toDataURL("image/jpeg", ratio); imgUpload.imgBase64Arr.push(imgBase); return imgUpload.imgBase64Arr; }, } //文件上传 $("#fileUp").change(function(){ imgUpload.onSelect(this) }) //获得所有img的 src,可以传给后端 $("#sub").click(function(){ var getBase = $(".upload_image"); getBase.each(function(){//重新绘制图片,减小base64字符串的长度 imgUpload.funCanvas(640, 400, 0.6, $(this).attr("src")); }) console.log(imgUpload.imgBase64Arr) }) </script> </body> </html>

  这里图片上传的思路:获得上传后的img,将file的img 转成base64 ,作为前端预览,也可以将base64的字符串,传到后端,由后端生成图片,在传到后端前,可以将其base64的字符串压缩一下,这里的采取的一个方法就是用canvas的重新绘制图片,然后在canvas里就会有 新的base64字符串。

目录
相关文章
|
11月前
|
PHP 数据安全/隐私保护
ueditor上传图片添加水印
博客在上传图片的时候,我希望能打上我博客链接的水印,掘金,csdn都是这么干的,这事我得学习。 平时的图片上传还好说,在文章编辑的时候,使用ueditor上传图片加水印需要修改ueditor部分PHP的源码,我这里大概记录一下。 首先打开php文件夹下的Uploader.class.php
55 0
uiapp 上传图片
uiapp 上传图片
123 0
|
存储 NoSQL 前端开发
一文搞定图片选择及图片上传
本篇介绍了在 Flutter 中如何选择图片文件,图片选择组件的封装和如何将图片上传到后台。通过本篇,可以了解Flutter 构建应用时的图片上传过程。
954 0
|
JavaScript
预览本地图片原生js
预览本地图片原生js
图片上传预览
     最近做需求时遇到的,上传的时候预览一下,一开始并没有想着用插件什么的,太复杂,只是个预览效果,不如自己写省事。前前后后也就几十行代码(包含头尾HTML、注释、输出调试),反正是比引用插件少多了,自己写也是个锻炼。
811 0
|
JavaScript 内存技术
|
Web App开发 JavaScript 内存技术