先看效果图

一、直接展示上传的图片

CSS代码:

#previewImg {position: relative;width: 80px;height: 80px;line-height: 80px;border: 1px dashed rgb(0, 0, 0, .5);text-align: center;cursor: pointer;
}#previewImg:hover {border: 1px dashed rgb(0, 0, 0);
}#previewImg p {width: 100%;margin: 0;
}#fileInp {position: absolute;top: 0;left: 0;z-index: 5;width: 100%;height: 100%;cursor: pointer;opacity: 0;
}#fileImg {position: absolute;top: 0;left: 0;width: 100%;height: 100%;opacity: 0;
}

HTML代码:

<div id="previewImg"><input type="file" id="fileInp"><img src="" alt="111" id="fileImg"><p>上传图片</p>
</div>

JS代码:

let inp = document.getElementById('fileInp');
let fileImg = document.getElementById('fileImg');
inp.onchange = function() {let inpObj = inp.files[0]; // 拿到上传文件的属性// inpObj.size 上传文件的大小(字节数)// inpObj.type 上传文件的类型   例如:image/pngif (inpObj.type !== "image/png") {alert('上传的不是png/jpg类型的图片')} else if (inpObj.size / 1024 / 1024 > 2) {alert('上传的图片超过2MB')} else {let windowURL = window.URL || window.webkitURL;let img = document.getElementById('preview');if (inp && inpObj) {// createObjectURL(inpObj)  创建一个文件的临时地址let dataURL = windowURL.createObjectURL(inpObj);fileImg.setAttribute('src', dataURL);fileImg.style.opacity = 1}}
}

二、将图片转换成base64,再上传

CSS、HTML代码同上

JS代码

let inp = document.getElementById('fileInp');
let fileImg = document.getElementById('fileImg');
inp.onchange = function() {let inpObj = inp.files[0]; // 拿到上传文件的属性// inpObj.size 上传文件的大小(字节数)// inpObj.type 上传文件的类型   例如:image/pngif (inpObj.type !== "image/png") {alert('上传的不是png/jpg类型的图片')} else if (inpObj.size / 1024 / 1024 > 2) {alert('上传的图片超过2MB')} else {let windowURL = window.URL || window.webkitURL;let img = document.getElementById('preview');if (inp && inpObj) {// createObjectURL(inpObj)  创建一个文件的临时地址let dataURL = windowURL.createObjectURL(inpObj);toBase64(dataURL);}}
}
function toBase64(imgSrc) {var canvas = document.createElement("canvas");canvas.width = 320;canvas.height = 320;let context = canvas.getContext("2d");context.rect(0, 0, canvas.width, canvas.height);context.fillStyle = "#fff";context.fill();let myImage = new Image();myImage.src = imgSrc; //背景图片  你自己本地的图片或者在线图片myImage.crossOrigin = 'Anonymous';let base64 = null;myImage.onload = () => {context.drawImage(myImage, 0, 0, 320, 320);base64 = canvas.toDataURL("image/png");// 等图片转换成base64之后 更新图片fileImg.setAttribute('src', base64);fileImg.style.opacity = 1}
}

原生JS实现上传图片预览效果相关推荐

  1. 上传图片显示扫描效果html5,JS+HTML5实现上传图片预览效果完整实例【测试可用】...

    本文实例讲述了JS+HTML5实现上传图片预览效果.分享给大家供大家参考,具体如下: 在项目中遇到用input标签file类型的文件上传,想实在上传之前进行图片的预览功能:之前的做的一个解决方案是文件 ...

  2. firefox js服务器上怎么显示图片的绝对路径,js兼容火狐显示上传图片预览效果的方法...

    本文实例讲述了js兼容火狐显示上传图片预览效果的方法.分享给大家供大家参考.具体实现方法如下: Image preview example div {width:100px;height:100px; ...

  3. 原生JS调用打印预览页面并实现打印文件流图片(亲测有效)

    在工作中我们经常会遇到使用浏览器预览打印页面并实现文件打印,那么如何才能够在打印预览页面中显示图片呢?希望看完这篇文章对您有所帮助! 1. 原生JS调用打印预览页面 2. 在打印预览页面加载图片 使用 ...

  4. 【React工作记录九十一】Viewer.js实现图片预览效果

    前言 大家好 我是歌谣 今天要说的是一个需求图片可以实现一个预览的结果最近涉及一个移动端项目需要把其中的图片变成可预览的图片 听学弟说 可以利用viewer进行实现首先我们需要做的就是先写一个简单de ...

  5. 原生js之图片预览的封装

    图片预览 _this:input[file]对象 _thisNext:下一个要操作的dom对象 cb:回调函数 function changeImg(_this,_thisNext,cb){var r ...

  6. html元素拖拽预览图,HTML5拖拽上传图片预览

    1.文件API:(File API) file类型的的表单控件选择的每一个文件都是一个file对象,而FileList对象则是这些file对象的集合列表,代表所选择的所有文件.file对象继承于Blo ...

  7. JS兼容各个浏览器的本地图片上传即时预览效果

    JS兼容各个浏览器的本地图片上传即时预览效果 很早以前 在工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简 ...

  8. 上传身份证照片js_html+css+js 实现拍照预览上传图片功能

    前言:我们在做网页时经常会需要有上传图片的需求,可能是选择图片或者拍照上传,如果简单的使用这种方式虽然也能实现功能,但用户体验上可能会差了一些,所以本文记录了使用css+js实现图片选中后的预览及压缩 ...

  9. jquery实现上传图片及图片大小验证、图片预览效果代码

    jquery实现上传图片及图片大小验证.图片预览效果代码 jquery实现上传图片及图片大小验证.图片预览效果代码 上传图片验证 */ function submit_upload_picture() ...

  10. html实现360展示图片,js html5 360度全景图片预览效果

    特效描述:js html5 360度全景图片 预览效果.html5实现360度全景,html5 720度全景图,html5全景图,html5全景图源代码,html5 3d全景,360度全景图,3d36 ...

最新文章

  1. kettle分批处理大表数据_kettle-批量同步表数据
  2. 区块链 软分叉和硬分叉 简介
  3. python爬虫如何从一个页面进入另一个页面-Python爬虫 (一):爬取一个简单的静态网页...
  4. VTK:Filtering之ImplicitBoolean
  5. 崽崽的发烧终于快结束了
  6. OnDraw与OnPaint有什么区别
  7. java查询未提交事务的数据_Jfinal同一事务中已插入的数据记录在事务未提前前查询不到?...
  8. 股票分红对于短期投资有好处吗?
  9. UWP 自然灾害App在刷新数据后卡死的解决方案
  10. win10计算机策略配置文件,Win10系统如何打开组策略?打开组策略的具体方法
  11. 工程项目管理(EPC)系统全套流程详细解读(含流程图)
  12. Techme INC:这5类人要警惕癌症!
  13. matlab入门教程ppt,[2018年最新整理]matlab入门PPT教程.ppt
  14. Python技术pip的使用命令总结
  15. scholarscope不显示影响因子_如何根据IF快速筛选文章,ScholarScope来帮你
  16. 同步异步+阻塞非阻塞-三述
  17. 信息传播渠道多元化日渐明显
  18. python做数据可视化视频_B站上的数据可视化视频是怎么做的,用到了什么技术和工具?...
  19. 数字图像处理:python对图像做傅里叶变换,理想低通滤波器,理想高通滤波器
  20. 百度地图API获取某个行政区

热门文章

  1. 三维软件Skyline开发初步
  2. c语言void*指针,C语言void指针
  3. java 解决世界最难数独
  4. 数字图像处理与分析---指纹图像增强(Python)
  5. matlab 音乐传奇,matlab 如何打开wav声音文件
  6. 软考-内存按字节编址,求地址间的存储单元数量(容量)以及芯片个数。
  7. Architectures与指令集架构armv6,armv7,armv7s,arm64,i386,x86_64
  8. deepin,windows10双系统安装教程
  9. ai软件基础教程自学网,怎么快速学会ai软件
  10. 测试工具之 LoadRunner WinRunner