基于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作用域及作用域链概念理解及使用
Apr 15 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
Apr 18 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
Jul 11 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
Mar 28 Javascript
javascript中mouseenter与mouseover的异同
Jun 06 Javascript
Vue非父子组件通信详解
Jun 12 Javascript
使用原生js+canvas实现模拟心电图的实例
Sep 20 Javascript
详解vue的diff算法原理
May 20 Javascript
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
vue中使用百度脑图kityminder-core二次开发的实现
Sep 26 Javascript
微信小程序实现电子签名功能
Jul 29 Javascript
Vue js with语句原理及用法解析
Sep 03 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
十大“创意”战术!
2020/03/04 星际争霸
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
解析vue、angular深度作用选择器
2019/09/11 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
python开发之文件操作用法实例
2015/11/13 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
教学个人的自我评价分享
2014/02/16 职场文书
体育活动总结范文
2014/05/04 职场文书
森林病虫害防治方案
2014/06/02 职场文书
优秀大学生自荐信
2014/06/09 职场文书
旷课检讨书500字
2014/10/14 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
工程部文员岗位职责
2015/02/04 职场文书
医院合作意向书范本
2015/05/08 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
vue实现Toast组件轻提示
2022/04/10 Vue.js