生活中拍摄了很多图片,有时候想用照片流的形式来展示,很多手机都已经做了这些处理,你可以选择按照地点来排列,或者按照拍摄日期来排列,那这些都是通过什么技术来实现的呢?

其实图片存储了大量的信息,可以通过exif来获取到这些信息,获取这些信息可以通过java或者php等后台语言来实现,在这里我用jquery的一个插件来实现。

HTML代码:

<img src="exif.jpg" id="img" exif="true" alt="点击图片查看GPS信息" title="tiger" width="500"/>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.exif.js"></script>
<script type="text/javascript" src="demo.js"></script>

JS代码:

$(function(){

$("#img").on( "click", function () {

var lat_ref = $(this).exif("GPSLatitudeRef");

if(typeof lat_ref[0] == "undefined"){
console.log("图片没有GPS信息");
return false;
}

var $this = $(this);

var lat = $this.exif("GPSLatitude"); //纬度
var lng = $this.exif("GPSLongitude"); //经度
var lng_ref = $this.exif("GPSLongitudeRef");
var make = $this.exif("Make"); //相机
var model = $this.exif("Model"); //型号
var t = $this.exif("ExposureTime"); //快门
var f = $this.exif("FNumber"); //光圈
var length = $this.exif("FocalLength");
var iso = $this.exif("ISOSpeedRatings"); //ISO
var ev = $this.exif("ExposureBias");
var soft = $this.exif("Software"); //软体
var date = $this.exif("DateTime"); //拍摄时间
var dpi = $this.exif("XResolution");
var sa = $this.exif("Saturation");
var sha = $this.exif("Sharpness");
var wb = $this.exif("WhiteBalance");
var lat_ref = $this.exif("GPSLatitudeRef");//North or South
var lat = $this.exif("GPSLatitude"); //纬度值
var lng_ref = $this.exif("GPSLongitudeRef");//West or East
var lng = $this.exif("GPSLongitude");

var lng_s = lng_ref == "E" ? "东经:" : "西经:";
var lat_s = lat_ref == "N" ? "北纬:" : "南纬:";


console.log(lat_s+change_latlng(lat)+"\r\n"+lng_s+change_latlng(lng));

console.log("相机:" + make + ",型号:" + model + ",拍摄时间:" + date);
});

function change_latlng(latlng){ //经纬度转换为十进制
var arr=latlng;
return arr[0][0]+arr[0][1]/60+arr[0][2]/3600;
}
});

通过上面demo获取到拍摄的相机,型号,拍摄时间,以及经纬度,足够我们去制作个性化的照片墙了。