• PHP获取照片exif信息


     

    在这个没图说个屁的年代,照片还是很重要的。如果照片上传后会自动加上 照片相关信息,那用户体验的确会好很多,本着这个想法,今天尝试了下 PHP获取照片exif信息,重要的是 获取图片的GPS信息,如果再加上 google maps API 的话,就可以轻松得到位置信息
    <?php
    if(function_exists('exif_read_data'))
    {
     $exif=exif_read_data('./test/test1.jpg');  //图片地址
     //var_dump($exif);
     
     //echo $data['timeline']=$exif['DateTimeOriginal'];
     $data['size']=$size=$exif['FileSize']/1024;
     if($size>1024)
     {
     //单位为MB
     //echo ceil($size/1024).'MB<br>';
     }else{
     //单位为KB
     
    //echo ceil($size).'KB<br>';
     }
     
     //设备信息
     $data['device']=$exif['Make'].''.$exif['Model'];
     
     if($exif['GPSLatitudeRef']=='N'&&$exif['GPSLongitudeRef']=='E')
     {
     //地图坐标信息
     
     //纬度
     $data['latitude'] = getGps($exif['GPSLatitude'],$exif['GPSLongitudeRef']);
     //经度
     $data['longitude'] = getGps($exif['GPSLongitude'],$exif['GPSLongitudeRef']);
     
     }
     
     //eval('echo 1+3;');
     var_dump($data);
     
     echo 'http://ditu.google.cn/maps?q=('.$data['latitude'].','.$data['longitude'].')';
     
    }
    /*
     
    取得EXIF的內容
     
    $exif = exif_read_data('my.jpg', 0, true);
     
    $latitude = $exif['GPS']['GPSLatitude']; //经度
     
    $longitude = $exif['GPS']['GPSLongitude']; //纬度
     
    都是各有三個个元素的array 各代表度,分,秒
     
    把上面2个值分别调用如下方法,就可以得到gps经纬度了
     
     $banqiu = $exif['GPS'][GPSLatitudeRef]
     或者
     $banqiu = $exif['GPS'][GPSLongitudeRef]
     */
    function getGps($exifCoord,$banqiu)
     
    {
     
    $degrees= count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
     
    $minutes= count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0;
     
    $seconds= count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0;
     
     
    //normalize
     
    $minutes+= 60 * ($degrees- floor($degrees));
     
    $degrees= floor($degrees);
     $seconds+= 60 * ($minutes- floor($minutes));
     
    $minutes= floor($minutes);
     //extra normalization, probably not necessary unless you get weird data
     
    if($seconds>= 60)
     
    {
     
    $minutes+= floor($seconds/60.0);
     
    $seconds-= 60*floor($seconds/60.0);
     
    }
     if($minutes>= 60)
     
    {
     
    $degrees+= floor($minutes/60.0);
     
    $minutes-= 60*floor($minutes/60.0);
     
    }
     $lng_lat = $degrees + $minutes/60 + $seconds/60/60;
     if(strtoupper($banqiu) == 'W' || strtoupper($banqiu) == 'S'){
     //如果是南半球 或者 西半球 乘以-1
     $lng_lat = $lng_lat * -1;
     }
     return $lng_lat;
     //return array('degrees'=> $degrees, 'minutes'=> $minutes, 'seconds'=> $seconds);
    }
    /*
    取得EXIF的內容
    分数 转 小数
    */
    function gps2Num($coordPart)
     
    {
     
    $parts= explode('/', $coordPart);
     if(count($parts) <= 0)
     
    return 0;
     
    if(count($parts) == 1)
     
    return $parts[0];
     return floatval($parts[0]) / floatval($parts[1]);
     
    }
  • 相关阅读:
    lusernews python写的类HN网站 | Python China
    找一个可以@user的gem。
    Language modeling meets inference networks
    play!framework,新一代ROR风格的fullstack framework
    少了unicontools是不行滴
    用纯CSS3绘制萌系漫画人物动态头像
    C#获取当前程序运行路径的方法集合
    LINQ简记(2):重要概念
    程序员新年要实现的10个愿望
    LINQ简记(1):基本语法
  • 原文地址:https://www.cnblogs.com/ldms/p/3182204.html
Copyright © 2020-2023  润新知