基于JavaScript实现本地图片预览


Posted in Javascript onFebruary 08, 2017

本文实例为大家分享了js本地图片预览的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<!--
<!DOCTYPE html>一定要放在第一行,除非上面都是空行

在HTML规范中,单独存在的标签是不需要使用/来自我关闭的,比如<br>,<input>,<hr>等等这样的标签都是符合语法的.
在XHTML规范中,单独存在的标签要按照XML的语法规则进行自我关闭,上面三个标签就应写成<br />,<input />,<hr />
-->
<html>
  <head>
    <meta charset="utf8">
    <style>
      input[type=radio] {
        /* 按钮与文字对齐 */
        vertical-align:middle;
      }
      input[type=file] {
        display: block;
      }
      #img {
        width: 200px;
        height: 200px;
        border: 1px solid black;
        margin-top: 10px;
      }
    </style>
  </head>
  <body>
    <input type="radio" name="previewType" value="fileReader" onChange="onPreviewTypeChange()">fileReader
    <input type="radio" name="previewType" value="createURL" onChange="onPreviewTypeChange()">createURL
    <hr>
    <input type="file" id="imgFile" onChange="imgChange()" value="test.jpg">
    <img id="img">
    <script>
      var previewTypes = document.getElementsByName("previewType");
      var imgFile = document.getElementById("imgFile");
      var img = document.getElementById("img");

      function getPreviewType() {
        for(var i=0; i<previewTypes.length; i++) {
          if(previewTypes[i].checked) {
            return previewTypes[i].value;
          }
        }
      }

      function onPreviewTypeChange() {
        imgChange(event.target.value);
      }

      function imgChange(type) {
        img.src = "";
        var files = imgFile.files;
        console.log(files);
        if(!files || files.length === 0) {
          return;
        }
        var file = files[0];
        if(!type) {
          type = getPreviewType();
          if(!type) {
            return;
          }
        }
        switch(type) {
          case "fileReader":
            var fr = new FileReader();
            fr.onload = function(progressEvent) {
              console.log(progressEvent);
              img.src = progressEvent.target.result;
            }
            fr.readAsDataURL(file);
            break;
          case "createURL":
            img.onload = function() {
              //释放一个之前通过调用 URL.createObjectURL() 创建的已经存在的 URL 对象。
              URL.revokeObjectURL(img.src);
            }
            img.src = URL.createObjectURL(file);
            break;
        }
      }
    </script>
  </body>
</html>

fileReader.readAsDataURL

基于JavaScript实现本地图片预览

URL.createObjectURL

可以看出URL实质上是以“blob:”打头的,后面跟着32位的UUID(8-4-4-4-12)的结构。

基于JavaScript实现本地图片预览

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
替代window.event.srcElement效果的可兼容性的函数
Dec 18 Javascript
一个轻量级的javascript库 pj介绍
Dec 19 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
浅谈javascript原型链与继承
Jul 13 Javascript
jquery不常用方法汇总
Jul 26 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
Oct 04 Javascript
jquery实现搜索框功能实例详解
Jul 23 jQuery
jquery获取img的src值实例介绍
Jan 16 jQuery
Vue 实例事件简单示例
Sep 19 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
Dec 17 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
js 判断登录界面的账号密码是否为空
Feb 08 #Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
Feb 08 #Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 #Javascript
Bootstrap模态窗口源码解析
Feb 08 #Javascript
Bootstrap路径导航与分页学习使用
Feb 08 #Javascript
Bootstrap缩略图与警告框学习使用
Feb 08 #Javascript
Bootstrap导航条学习使用(二)
Feb 08 #Javascript
You might like
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
Python设计模式之单例模式实例
2014/04/26 Python
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
利用Psyco提升Python运行速度
2014/12/24 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
关于打架的检讨书
2014/01/17 职场文书
爽歪歪广告词
2014/03/20 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
委托证明书
2014/09/17 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
精神病医院见习报告
2014/11/03 职场文书
颐和园导游词
2015/01/30 职场文书
教师培训简讯
2015/07/20 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫