在这个没图说个屁的年代,照片还是很重要的。如果照片上传后会自动加上 照片相关信息,那用户体验的确会好很多,本着这个想法,今天尝试了下 PHP获取照片exif信息,重要的是 获取图片的GPS信息,如果再加上 google maps API 的话,就可以轻松得到位置信息
<?php
if
(function_exists(
'exif_read_data'
))
{
$exif
=exif_read_data(
'./test/test1.jpg'
);
$data
[
'size'
]=
$size
=
$exif
[
'FileSize'
]/1024;
if
(
$size
>1024)
{
}
else
{
}
$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'
]);
}
var_dump(
$data
);
}
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;
$minutes
+= 60 * (
$degrees
-
floor
(
$degrees
));
$degrees
=
floor
(
$degrees
);
$seconds
+= 60 * (
$minutes
-
floor
(
$minutes
));
$minutes
=
floor
(
$minutes
);
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'
){
$lng_lat
=
$lng_lat
* -1;
}
return
$lng_lat
;
}
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]);
}