基于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实现宇宙星空背景效果的方法
Mar 03 Javascript
详细解读AngularJS中的表单验证编程
Jun 19 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
Jul 27 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
微信小程序 swiper组件详解及实例代码
Oct 25 Javascript
利用Js+Css实现折纸动态导航效果实例源码
Jan 25 Javascript
无法获取隐藏元素宽度和高度的解决方案
Mar 07 Javascript
利用js定义一个导航条菜单
Mar 14 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
微信小程序实现手势滑动效果
Aug 26 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
Sep 13 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 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
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
php二维数组排序详解
2013/11/06 PHP
php生成zip文件类实例
2015/04/07 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
python写入中英文字符串到文件的方法
2015/05/06 Python
5款非常棒的Python工具
2018/01/05 Python
浅析python参数的知识点
2018/12/10 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
写给女生的道歉信
2014/01/14 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
2014年党课学习材料
2014/05/11 职场文书
数学教育专业求职信
2014/07/22 职场文书
2014年班务工作总结
2014/12/02 职场文书
电影建党伟业观后感
2015/06/01 职场文书
升学宴学生致辞
2015/07/27 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
html5调用摄像头截图功能
2022/01/18 Javascript