基于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 相关文章推荐
js模拟实现Array的sort方法
Dec 11 Javascript
jquery实现input输入框实时输入触发事件代码
Jan 28 Javascript
JavaScript事件委托的技术原理探讨示例
Apr 17 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
JavaScript中利用构造器函数模拟类的方法
Feb 16 Javascript
VUE element-ui 写个复用Table组件的示例代码
Nov 18 Javascript
webpack学习教程之前端性能优化总结
Dec 05 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
Sep 30 Javascript
es6数值的扩展方法
Mar 11 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 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防盗链的常用方法小结
2010/07/02 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
《花瓣飘香》教学反思
2014/04/15 职场文书
开国大典观后感
2015/06/04 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang