基于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 继承实现例子
Aug 12 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
May 06 Javascript
js jquery数组介绍
Jul 15 Javascript
js常用数组操作方法简明总结
Jun 20 Javascript
Jquery promise实现一张一张加载图片
Nov 13 Javascript
JavaScript中rem布局在react中的应用
Dec 09 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
Sep 01 Javascript
element-ui 表格数据时间格式化的方法
Aug 24 Javascript
vue cli3 配置proxy代理无效的解决
Oct 30 Javascript
javascript数组的定义及操作实例
Nov 10 Javascript
vue实现前端列表多条件筛选
Oct 26 Javascript
Vue与React的区别和优势对比
Dec 18 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
更改localhost为其他名字的方法
2014/02/10 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
YII框架关联查询操作示例
2019/04/29 PHP
JavaScript 图像动画的小demo
2012/05/23 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
护士演讲稿范文
2014/01/05 职场文书
网站客服岗位职责
2014/04/05 职场文书
老师对学生的寄语
2014/04/09 职场文书
技术支持岗位职责
2015/02/13 职场文书
中标通知书范本
2015/04/17 职场文书
毕业论文致谢词
2015/05/14 职场文书