2019独角兽企业重金招聘Python工程师标准>>>

对一个摄影爱好者来说,从高手的作品中学习是非常有用的。而照片的光圈,快门,感光度等信息是关注的重点。

上代码:

 1 <script src="../js/jquery.js" type="text/javascript"></script>
 2 <script src="../js/jquery.exif.js" type="text/javascript"></script>
 3 <script src="../js/jquery.lazyload.js" type="text/javascript"></script>
 4 <script type="text/javascript">
 5     $(document).ready(
 6         function()
 7         {
 8             count = 19 ;
 9             var defaultVision = "建筑"
10             for( i=1;i<count;++i )
11             {
12                 var pin = $('<div></div>',{'class':'pin'}) ;
13                 var img_src = 'photos/'+defaultVision+'/'+i+'.jpg' ;
14
15
16                 var img = $('<img />',{'src':'../images/loading.gif','data-original': img_src,'class':'lazy img'});
17                 pin.append(img);
18                 var img_info ="<div class='img_info'><img src='../images/loading.gif' /></div>" ;
19                 pin.append(img_info);
20                 $('#columns').append(pin);
21             }
22
23             mylazy();
24         }
25     );
26
27     var mylazy = function()
28     {
29         $("img.lazy").lazyload({
30                 effect : "fadeIn",
31                 load : function()
32                 {
33                     setPhoto_info(this);
34                 },
35         });
36     }
37     function setPhoto_info(ele)
38     {
39         //获取图片的Exif信息
40         var info = "" ;
41         var model = "" ;
42         var fnumber = "" ;
43         var time = "" ;
44         var iso = "" ;
45         var $this = $(ele).exifLoad(function()
46         {
47             //这里还可以获取更多的参数,参见exif的信息格式
48             model = $this.exif("Model");
49             fnumber = $this.exif("FNumber");
50             time = $this.exif("ExposureTime");
51             iso = $this.exif("ISOSpeedRatings");
52
53             if( time<1 ) time = "1/" + Math. round(1/time) ;
54             else time += "s" ;
55
56             var img_info = "<span>型号:<em class='model'>"+model+"</em></span>"+
57             "<span>光圈:<em class='fNumber'>"+fnumber+"</em></span>"+
58             "<br /><span>快门:<em class='ex_time'>"+time+"</em></span>"+
59             "<span>ISO:<em class='iso'>"+iso+"</em></span>";
60             $(ele).parent().find(".img_info").html(img_info);
61         });
62     }
63 </script>

之前遇到的问题是:
1,在jquery exif官网上的使用方式与这里不同;参考了网上的一些做法:http://developer.51cto.com/art/201207/346157.htm
2,需要在lazyload的load函数中定义回调函数,以使图片在加载完成后再读取exif信息

下面是用css3 columns实现的一个简单的Pinterest的例子,完整的代码如下:

  1 <!DOCTYPE HTML>
  2 <html lang="en">
  3 <head>
  4 <meta charset="utf-8" />
  5 <title>Pinterest</title>
  6 </head>
  7 <style type="text/css">
  8 * {  9     margin:0;
 10     padding:0;
 11 }
 12 body { 13     background:url(../images/beige_paper.png);
 14     font-family:"Microsoft Yahei";
 15     font-size:0.8em;
 16     color:#999;
 17 }
 18
 19 #container { 20     width:100%;
 21     height:100%;
 22 }
 23 /*这里准备加上不同的相册*/
 24 footer
 25 { 26
 27 }
 28 #columns
 29 { 30     -webkit-column-count: 3;
 31     -webkit-column-gap: 10px;
 32     -webkit-column-fill: auto;
 33 }
 34 .pin
 35 { 36     display: inline-block;
 37     background: #FEFEFE;
 38     border: 2px solid #FAFAFA;
 39     box-shadow: 0 1px 2px rgba(34, 25, 25, 0.4);
 40     margin: 0 2px 15px;
 41     -webkit-column-break-inside: avoid;
 42     -moz-column-break-inside: avoid;
 43     column-break-inside: avoid;
 44     padding: 5px;
 45     background: -webkit-linear-gradient(45deg, #FFF, #F9F9F9);
 46     opacity: 1;
 47     position:relative;
 48     -webkit-transition: all .2s ease;
 49 }
 50 .pin img.img { 51     width: 100%;
 52 }
 53 .pin .img_info
 54 { 55     padding:5px 0;
 56 }
 57 .pin .img_info em
 58 { 59     color:#000;
 60 }
 61 .pin .img_info span
 62 { 63     margin:0 3px;
 64 }
 65 @media (min-width: 960px) { 66     #columns {
 67         -webkit-column-count: 4;
 68         -moz-column-count: 4;
 69         column-count: 4;
 70     }
 71 }
 72
 73 @media (min-width: 1100px) { 74     #columns {
 75         -webkit-column-count: 5;
 76         -moz-column-count: 5;
 77         column-count: 5;
 78     }
 79 }
 80 #columns:hover .pin:not(:hover) { 81     opacity: 0.4;
 82 }
 83
 84 </style>
 85 <script src="../js/jquery.js" type="text/javascript"></script>
 86 <script src="../js/jquery.exif.js" type="text/javascript"></script>
 87 <script src="../js/jquery.lazyload.js" type="text/javascript"></script>
 88 <script type="text/javascript">
 89     $(document).ready(
 90         function()
 91         {
 92             count = 19 ;
 93             var defaultVision = "建筑"
 94             for( i=1;i<count;++i )
 95             {
 96                 var pin = $('<div></div>',{'class':'pin'}) ;
 97                 var img_src = 'photos/'+defaultVision+'/'+i+'.jpg' ;
 98
 99
100                 var img = $('<img />',{'src':'../images/loading.gif','data-original': img_src,'class':'lazy img'});
101                 pin.append(img);
102                 var img_info ="<div class='img_info'><img src='../images/loading.gif' /></div>" ;
103                 pin.append(img_info);
104                 $('#columns').append(pin);
105             }
106
107             mylazy();
108         }
109     );
110
111     var mylazy = function()
112     {
113         $("img.lazy").lazyload({
114                 effect : "fadeIn",
115                 load : function()
116                 {
117                     setPhoto_info(this);
118                 },
119         });
120     }
121     function setPhoto_info(ele)
122     {
123         //获取图片的Exif信息
124         var info = "" ;
125         var model = "" ;
126         var fnumber = "" ;
127         var time = "" ;
128         var iso = "" ;
129         var $this = $(ele).exifLoad(function()
130         {
131             //这里还可以获取更多的参数,参见exif的信息格式
132             model = $this.exif("Model");
133             fnumber = $this.exif("FNumber");
134             time = $this.exif("ExposureTime");
135             iso = $this.exif("ISOSpeedRatings");
136
137             if( time<1 ) time = "1/" + Math. round(1/time) ;
138             else time += "s" ;
139
140             var img_info = "<span>型号:<em class='model'>"+model+"</em></span>"+
141             "<span>光圈:<em class='fNumber'>"+fnumber+"</em></span>"+
142             "<br /><span>快门:<em class='ex_time'>"+time+"</em></span>"+
143             "<span>ISO:<em class='iso'>"+iso+"</em></span>";
144             $(ele).parent().find(".img_info").html(img_info);
145         });
146     }
147 </script>
148 <body>
149 <div id="container">
150   <div id="columns">
151
152   </div>
153 </div>
154 <footer></footer>
155 </body>
156 </html>

转载于:https://my.oschina.net/ifeixiang/blog/339566

jquery exif + lazyload实现延迟加载并显示相片exif信息相关推荐

  1. 【jQuery】利用lazyload.js延迟加载技术应对多图杀猫的单一页面

    有时候不可避免地在某一页面摆上大量图片,众所周知,一张网页如果上面的元素超过100KB,那么,你的网页会加载得很慢,纵使现在的网络已经不是当年的猫,然而,你也应该尽可能地提高你的网页加载速度.对于多图 ...

  2. jquery插件实现图片延迟加载

    在页面中图片较多时,一次性加载所有图片会耗去很多时间. 我们可以选择"延迟加载"的方式来加载图片,相对这种页面的加载速度将会有个很大的提升. 图片延迟加载的原理很简单,依据用户正浏 ...

  3. 使用jquery插件实现图片延迟加载技术

    有时我们看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对 ...

  4. MATLAB批量读取航摄相片EXIF信息和GNSS信息以及MATLAB批量经纬度坐标转换空间直角坐标

    前言 没有前言,创作不易,希望家人们点点赞,如有错误评论留言,感谢支持! 文章目录 前言 一.MATLAB批量读取航摄相片的EXIF信息,并批量提取其GNSS经纬度信息 (1)前述: (2)代码实现和 ...

  5. jquery控制元素的隐藏和显示的几种方法。

    使用jquery控制div的显示与隐藏,一句话就能搞定,例如: 1.$("#id").show()表示为display:block, $("#id").hide ...

  6. html鼠标经过盒子延时显示,jQuery实现鼠标滑过延时显示的效果

    WEB开发人员有时候经常用到延时操作的用户交互事件,比如聚美优品网站首页的产品展示,当鼠标移入产品1秒钟后,会显示产品的详情,而不希望用户的鼠标指针刚刚移入元素就显示详情,对于不希望显示详情的用户来说 ...

  7. 使用libexif开源库修改jpeg相片exif信息

    使用libexif开源库修改jpeg相片exif信息 libexif简介 一.读exif信息 二.写exif信息 说明 例:修改exif中GPS海拔高度 libexif简介 libexif是一个开源的 ...

  8. jquery实现div的隐藏和显示

    jquery实现div的隐藏和显示 $('#wsView')是要点击的按钮,$('#secondMenu')是要显示或隐藏的内容区域 <div style="float:left;ma ...

  9. html点击隐藏divjq,jquery点击a标签怎么显示和隐藏div?详解

    你知道jquery点击a标签要如何才能够显示以及隐藏div吗?下面的文章要给大家讲解的就是这个方面的内容哦,一起来看看吧. 1.新建一个html文件,命名test.html,用来讲解jquery点击a ...

最新文章

  1. 《数据科学家养成手册》第十一章------算法学1(穷举,分治,回溯,贪心,迭代)
  2. java 不知道键值名_java-如果您知道曲线名称和原始私钥/点,如...
  3. c语言对空指针memcpy,C语言memcpy 断错误
  4. Adadelta原文解读
  5. 人生苦短,我用Python!
  6. linux访问nfs端口号,linux nfs配置及访问控制
  7. python后台架构Django教程——admin管理员站点
  8. PullToRefresh使用详解(四)--利用回调函数实现到底加载
  9. Cell:植物根系如何允许有益微生物定植的
  10. er图转关系模式规则_ER模型到关系模型的转换规则
  11. fc流量计算机参数,ELSTER Flow Computer enCore FC1 流量计算机
  12. 面试大厂,你需要掌握这些面试技巧
  13. html5 输入用户名和密码登陆网址,360路由器登录网址用户名和密码指南
  14. Arduino Mixly入门到精通教程
  15. 计算机专业海报加文字,巧用字体做海报之——字图穿插
  16. mysql如何启动_如何重启MySQL,正确启动MySQL
  17. 手把手教你做智能LED灯(一) 功能规划与设计方案
  18. 金融业移动管理驾驶舱产品功能介绍
  19. 对话NASA传奇宇航员:太空中不止有未知与神秘,还有下午茶和电影
  20. 教程一:微信公众号的申请

热门文章

  1. 开机或者安装系统时提示tsc: Fast TSC calibration failed解决方法
  2. mysql 使用service mysqld start 提示未识别服务 进入/etc/rc.d/init.d 下面未发现有mysqld解决方法
  3. 遇到local variable ‘e‘ referenced before assignment这样的问题应该如何解决
  4. 异常:Error resolving template “xxx“, template might not exist or might not be accessible...解决办法
  5. 将所有行复制到剪贴板
  6. 在Chrome中禁用同一来源政策
  7. 如何在Linux中符号链接文件? [关闭]
  8. linux vnc端口映射,linux服务器配置docker+vnc,随时访问远程桌面
  9. python构建知识库_Python学习知识库
  10. ❤️缓存集合(一级缓存、二级缓存、缓存原理以及自定义缓存—源码+图文分析,建议收藏) ❤️