基于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 相关文章推荐
javascript学习笔记(六) Date 日期类型
Jun 19 Javascript
妙用Jquery的val()方法
Jun 27 Javascript
Javascript this 的一些学习总结
Aug 02 Javascript
js的匿名函数使用介绍
Dec 11 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
Jul 28 Javascript
详解AngularJs中$resource和restfu服务端数据交互
Sep 21 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
Mar 23 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
Oct 18 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 Javascript
小程序实现图片移动缩放效果
May 26 Javascript
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
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中PDO基础教程 入门级
2011/09/04 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
删除重复数据的算法
2006/11/23 Javascript
javascript FormatNumber函数实现方法
2008/12/30 Javascript
Javascript倒计时代码
2010/08/12 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
python跨文件使用全局变量的实现
2020/11/17 Python
详解anaconda安装步骤
2020/11/23 Python
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
成教毕业生自我鉴定
2013/10/23 职场文书
化工专业应届生求职信
2013/11/08 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL