ตัวอย่างวิธีถอด ข้อมูล พิกัดในภาพ เเละGPS ออกจากภาพ มาลง database php_exif

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 9704
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

ตัวอย่างวิธีถอด ข้อมูล พิกัดในภาพ เเละGPS ออกจากภาพ มาลง database php_exif

โพสต์โดย thatsawan » 01/02/2016 12:57 am

2016-02-01_1-04-01.png
2016-02-01_1-04-01.png (59.74 KiB) เปิดดู 422 ครั้ง


ตัวอย่างนี้
- ลองเอาภาพธรรมดามาใส่ GPS ใน Ligthroom เเต่ก็ยังไม่สามารถถอดได้ (ไม่เเน่ใจทำอะไรผิด)
- ถ้าใครต้องการ GPX File สามารถ Export จาก Ligthroom ได้

โค้ด: เลือกทั้งหมด

test_photo.jpg:
Image contains headers
test_photo
.jpg:
Array ( [FILE] => Array ( [FileName] => test_photo.jpg [FileDateTime] => 1454262383 [FileSize] => 535942 [FileType] => 2 [MimeType] => image/jpeg [SectionsFound] => ANY_TAG, IFD0, EXIF, GPS ) [COMPUTED] => Array ( [html] => width="1024" height="683" [Height] => 683 [Width] => 1024 [IsColor] => 1 [ByteOrderMotorola] => 0 [ApertureFNumber] => f/11.0 [Copyright] => ยฉ 2012 - Bhachara Chayraksa ) [IFD0] => Array ( [Make] => NIKON CORPORATION [Model] => NIKON D3100 [XResolution] => 350/[YResolution] => 350/[ResolutionUnit] => 2 [Software] => Adobe Photoshop Lightroom 4.0 (Windows) [DateTime] => 2013:01:12 23:50:05 [Artist] => Bhachara Chayraksa [Copyright] => ยฉ 2012 - Bhachara Chayraksa [Exif_IFD_Pointer] => 302 [GPS_IFD_Pointer] => 904 ) [EXIF] => Array ( [ExposureTime] => 1/500 [FNumber] => 11/[ExposureProgram] => 2 [ISOSpeedRatings] => 400 [ExifVersion] => 0230 [DateTimeOriginal] => 2013:01:12 11:02:54 [DateTimeDigitized] => 2013:01:12 11:02:54 [ShutterSpeedValue] => 8965784/1000000 [ApertureValue] => 6918863/1000000 [ExposureBiasValue] => 0/[MaxApertureValue] => 43/10 [MeteringMode] => 5 [LightSource] => 0 [Flash] => 0 [FocalLength] => 350/10 [SubSecTimeOriginal] => 80 [SubSecTimeDigitized] => 80 [SensingMethod] => 2 [FileSource] =>  [SceneType] =>  [CFAPattern] =>  [CustomRendered] => 0 [ExposureMode] => 0 [WhiteBalance] => 0 [DigitalZoomRatio] => 1/[FocalLengthIn35mmFilm] => 52 [SceneCaptureType] => 1 [GainControl] => 1 [Contrast] => 0 [Saturation] => 0 [Sharpness] => 0 [SubjectDistanceRange] => 0 [UndefinedTag:0xA431] => 2034564 [UndefinedTag:0xA432] => Array ( [0] => 180/10 [1] => 1050/10 [2] => 35/10 [3] => 56/10 ) [UndefinedTag:0xA434] => 18.0-105.0 mm f/3.5-5.6 ) [GPS] => Array ( [GPSLatitudeRef] => N [GPSLatitude] => Array ( [0] => 13/[1] => 426639/10000 [2] => 0/) [GPSLongitudeRef] => E [GPSLongitude] => Array ( [0] => 100/[1] => 306408/10000 [2] => 0/) ) 


ข้อมูล GPS

โค้ด: เลือกทั้งหมด

 [GPS] => Array
        
(
            [GPSLatitudeRef] => N
            
[GPSLatitude] => Array
                
(
                    [0] => 13/1
                    
[1] => 426639/10000
                    
[2] => 0/0
                
)

            [GPSLongitudeRef] => E
            
[GPSLongitude] => Array
                
(
                    [0] => 100/1
                    
[1] => 306408/10000
                    
[2] => 0/0
                
)

        )

โค้ด: เลือกทั้งหมด

<?php
echo 
"test_photo.jpg:<br />\n";
$exif = exif_read_data('test/test_photo.jpg', 'IFD0');
echo $exif===false ? "No header data found.<br />\n" : "Image contains headers<br />\n";

$exif = exif_read_data('test/test_photo.jpg', 0, true);
echo "test_photo.jpg:<br />\n";

foreach ($exif as $key => $section) {
   
    foreach 
($section as $name => $val) {
       
        echo 
"$key.$name$val<br />\n";
         
    
}
}

echo '<hr>';
 


ถ้าต้องการเเต่ พิกัด GPS ให้ทำตามวิธีนี้ค่ะ

โค้ด: เลือกทั้งหมด

$image_file = 'test/test_photo.jpg';

if(
file_exists($image_file)){
$details = exif_read_data($image_file);
//print_r($details);
$sections = explode(',',$details['SectionsFound']);

if(
in_array('GPS',array_flip($sections))){
echo format_gps_data($details['GPSLatitude'],$details['GPSLatitudeRef']);
echo '<br/>';
echo format_gps_data($details['GPSLongitude'],$details['GPSLongitudeRef']);
}else{
die(
'GPS data not found');
}
}else{
die(
'File does not exists');
}

function format_gps_data($gpsdata,$lat_lon_ref){
$gps_info = array();

foreach(
$gpsdata as $gps){
list(
$j , $k) = explode('/', $gps);
@
array_push($gps_info,$j/$k);
}
$coordination = $gps_info[0] + ($gps_info[1]/60.00) + ($gps_info[2]/3600.00);
return (($lat_lon_ref == "S" || $lat_lon_ref == "W" ) ? '-'.$coordination : $coordination).' '.$lat_lon_ref;
}
 


ผลที่ได้

โค้ด: เลือกทั้งหมด

13.711065 N
100.51068 E


ปล สำหรับใครที่ error ให้ลองทำตามนี่ก่อนค่ะ

โค้ด: เลือกทั้งหมด

extension=php_exif.dll
extension
=php_mbstring.dll


ขอขอบคุณภาพถ่ายจาก
http://pantip.com/topic/30041407

Jsk
PHP Newbie
PHP Newbie
โพสต์: 7
ลงทะเบียนเมื่อ: 04/04/2017 8:54 pm

Re: ตัวอย่างวิธีถอด ข้อมูล พิกัดในภาพ เเละGPS ออกจากภาพ มาลง database php_exif

โพสต์โดย Jsk » 04/04/2017 9:10 pm

ได้ำการทดองโคดแล้ว สามารถอัพโหลดภาพที่มี Gps เข้าฐานข้อมูได้ แต่ถ้า Upload ภาพไม่มี gps มันขึ้น error แต่ฐานข้อมูลเป็น 0 คะ มีวิธีการแก้ไขไหมคะ
Notice: Undefined offset: 0
Notice: Undefined offset: 1
Notice: Undefined offset: 2
หรือมีวิธีที่จะทำให้มันแสดง popup ว่า ไม่มี GPS ไหมคะ

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 16738
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ตัวอย่างวิธีถอด ข้อมูล พิกัดในภาพ เเละGPS ออกจากภาพ มาลง database php_exif

โพสต์โดย mindphp » 04/04/2017 10:15 pm

ขอดูตัวอย่างโค้ชหน่อยครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: viewforum.php?f=29
รับอบรม และพัฒนาระบบ: viewtopic.php?f=6&t=2042

Jsk
PHP Newbie
PHP Newbie
โพสต์: 7
ลงทะเบียนเมื่อ: 04/04/2017 8:54 pm

Re: ตัวอย่างวิธีถอด ข้อมูล พิกัดในภาพ เเละGPS ออกจากภาพ มาลง database php_exif

โพสต์โดย Jsk » 05/04/2017 12:06 am

นี้คะ code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>map</title>
</head>


<p align="center"><font color="#FFFFFF" size="+3"><b>Thank You for Upload</b></font></p>

<?php
//----> Uploag to Folder name >> Photo
if(move_uploaded_file($_FILES["file1"]["tmp_name"],"Photo/".$_FILES["file1"]["name"]))
{
echo "<p align='center'><font color='#FFFFFF' size='+2'><b>Upload Completed</b></font></p>";
}

//----> Show Picture Data
if($_FILES["file1"]["error"]>0){
echo "Error : ".$_FILES["file1"]["error"]."<br>";
}else{
echo "<table width='400' border='2' bordercolor='#FFFFFF' align='center'>";
echo "<tr>";
echo "<td><font color='#FFFFFF'><b>File Name : </b>".$_FILES["file1"]["name"]."</font></td>";
echo "</tr>";
echo "<tr>";
echo "<td><font color='#FFFFFF'><b>Type : </b>".$_FILES["file1"]["type"]."</font></td>";
echo "</tr>";
echo "<tr>";
echo "<td><font color='#FFFFFF'><b>Size : </b>".($_FILES["file1"]["size"]/1024)." KB</font></td>";
echo "</tr>";
//echo "Stored in : ".$_FILES["file1"]["tmp_name"];
}

$filename = @$_FILES["file1"]["name"];
$path = 'Photo/'.$filename;
$area = @$_POST["Area"];



//---->Pull GPS from Photo
if(file_exists($path)){
$details = exif_read_data($path);
$sections = explode(',',$details['SectionsFound']);

if(in_array('GPS',array_flip($sections))){
}else{
die('GPS data not found');
}
}else{
die('File does not exists');
}

function format_gps_data($gpsdata,$lat_lon_ref){
$gps_info = array();
foreach($gpsdata as $gps){
list($j , $k) = explode('/', $gps);
array_push($gps_info,$j/$k);
}
$coordination = $gps_info[0] + ($gps_info[1]/60.00) + ($gps_info[2]/3600.00);
return (($lat_lon_ref == "S" || $lat_lon_ref == "W" ) ? '-'.$coordination : $coordination).' '.$lat_lon_ref;
}

$Lat = format_gps_data($details['GPSLatitude'],$details['GPSLatitudeRef']);
$Lon = format_gps_data($details['GPSLongitude'],$details['GPSLongitudeRef']);

if($path != ""){
$exif_date = exif_read_data($path);
$edate = $exif_date['DateTime'];
}



echo "<tr>";
echo "<td><font color='#FFFFFF'><b>Latitude : </b>".$edate."</font></td>" ;
echo "</tr>";
echo "<tr>";
echo "<td><font color='#FFFFFF'><b>Latitude : </b>".$Lat."</font></td>" ;
echo "</tr>";
echo "<tr>";
echo "<td><font color='#FFFFFF'><b>Longitude : </b>".$Lon."</font></td>" ;
echo "</tr>";

echo "<tr>";
echo "<td><font color='#FFFFFF'><b>Date/Time : </b></font></td>" ;
echo "</tr>";


?>
<table width='400' border='0' align='center'>
<tr>
<td>
<p align="center"><a href="Map.php?abc=<?=$path;?>"><img src="images/google-maps.png" width="140" height="140"></a></p>
<p align="center"><font color="#FFFFFF" size="+1"><b>View on Map</b></font></p>
</td>
</tr>
</table>


<?php
require_once 'Connect.php';

$sql = "insert into $tbname set Photoname='$filename',Photopath='$path,'Area='$area',Date='$edate',Lat='$Lat',Lon='$Lon'";

mysql_query($sql)or die ('eror');

mysql_close();
?>
</body>
</html>


  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 3 และ บุคคลทั่วไป 0 ท่าน