::welovefoto:: ชมรมถ่ายภาพพิษณุโลก ::welovefoto:: ชมรมถ่ายภาพพิษณุโลก
30 กรกฎาคม 2010, 18:44:52 *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
Advanced Search  

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
หน้า: [1] พิมพ์
ผู้เขียน หัวข้อ: ++++ มาเขียนสคริปโชว์ค่า Exif กัน ++++  (อ่าน 2361 ครั้ง)
Svl2Nuk3
รุกขเทวดา
ร่มโพธ์ร่มไทร
*****
ออฟไลน์ ออฟไลน์

กระทู้: 1,976



« เมื่อ: 14 มิถุนายน 2008, 05:37:23 »

ขอขอบคุณ
DOFJerk   -> http://www.thaidphoto.com/forums/showthread.php?t=15384
Chi-0  -> http://forum.welovefoto.com/index.php?topic=1739.0

เริ่มแรกเลยมาดูตัวแปลก่อนครับ

// ประกาศตัวแปร docRef ให้เท่ากับ Document  นี้ (ไฟล์นี้)  ในที่นี้จะเรียก  properties  ต่าง ๆ ออกมา
var docRef = activeDocument;

//ประกาศตัวแปร strExifTitle  เก็บชื่อต่าง ๆ ไว้  เอาไว้เปรียบเทียบกับ  Exif  ถ้าตรงก็จะเก็บข้อมูลนั้นลง  Array strExifData
var strExifTitle = new Array("Model,","Exposure Time,","F-Stop,","ISO Speed Ratings,","Date Time Original,","Focal Length,");

//ประกาศตัวแปร  strExifData จองพื้นที่ไว้  7 ช่อง  เพื่อเก็บข้อมูล  ( Title มี 6  แต่จองไว้  7  เพราะว่า   Date Time  ต้องแยกกันเก็บ)
var strExifData = new Array("","","","","","","");

// ประกาศตัวแปร  strCurrent   ไว้เก็บ  String  เพื่อมาจัดการ
var strCurrent = new String();

//ประกาศตัวแปร  txtRef   เพื่อสร้าง text layer
var TextLayer = docRef.artLayers.add();
TextLayer.kind = LayerKind.TEXT;
var txtRef = TextLayer.textItem;
 

* getExif.zip (0.88 KB - ดาวน์โหลด 84 ครั้ง.)
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

http://svrnuke.multiply.com   -> เข้าไปเยี่ยมชมกันบ้างนะครับ
Svl2Nuk3
รุกขเทวดา
ร่มโพธ์ร่มไทร
*****
ออฟไลน์ ออฟไลน์

กระทู้: 1,976



« ตอบ #1 เมื่อ: 14 มิถุนายน 2008, 05:39:33 »

หลังจากที่เราประกาศตัวแปรไปเรียบร้อยแล้ว  คราวนี้ก็จะมาหาข้อมูลใส่  array  กันครับ

var j = 0;
var i = 0;
for (i=0; i < docRef.info.exif.length; i++)      // วนลูปเพื่อรอเรียกค่ามาประมวลผล
{
   strCurrent = docRef.info.exif.toString();   // นำค่าใน  array นั้น  มาแปลงเป็น string  แล้วเก็บไว้ในตัวแปร  strCurrent
   for (j=0; j < 6; j++)         //  วนลูป 6 ครั้งเพื่อหาตำแหน่งที่จะเก็บข้อมูลและเปรียบเทียบดูค่าที่จะนำมาใช้ เช่น model f-stop
   {
      if ((strExifData[j] == "") && (strCurrent.indexOf(strExifTitle[j]) >= 0))   //  ถ้าเจอข้อมูลตรงกับข้อมูลในตัวแปร strExifTitle ก็นำมาเก็บใน  strExifData
      {
         strCurrent = strCurrent.substring(strExifTitle[j].length,strCurrent.length);   //  ตัดสตริงออกมาเพื่อจะนำไปเก็บ
         strExifData[j] = strCurrent;   //  เก็บค่าลงตัวแปร  strExifData
         break;      // break loop  เพื่อหาข้อมูลของ  exif อันถัดไป
      }
   }
}


//  แปลงวันที่และเวลาเก็บลงตัวแปร  strExifData
if (strExifData[4] != "")
{
   strExifData[6] = strExifData[4].substring(11, 16);
   strExifData[4] = strExifData[4].substring(8, 10) + "-" + strExifData[4].substring(5, 7) + "-" + strExifData[4].substring(0, 4);
   
}
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

http://svrnuke.multiply.com   -> เข้าไปเยี่ยมชมกันบ้างนะครับ
Svl2Nuk3
รุกขเทวดา
ร่มโพธ์ร่มไทร
*****
ออฟไลน์ ออฟไลน์

กระทู้: 1,976



« ตอบ #2 เมื่อ: 14 มิถุนายน 2008, 05:39:54 »

หลังจากที่ลองใช้  ผมก็พบว่ามันมีตัวเลขอะไรไม่รู้ต่อท้าย  ซึ่งคั่นด้วยเครื่องหมาย  ,   ผมจึงตัดข้อความตั้ง  ,  ออกไป
// ตัดข้อความหลังเครื่องหมาย , ออก
for(i=0;i<6;i++)
{
   strCurrent = "";
   for (j=0;j<strExifData.length;j++)
   {
      if (strExifData.substring(j,j+1)== ",")
      {
         break;
      }
      strCurrent += strExifData.substring(j,j+1);
     
   }
   strExifData = strCurrent;
}
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

http://svrnuke.multiply.com   -> เข้าไปเยี่ยมชมกันบ้างนะครับ
Svl2Nuk3
รุกขเทวดา
ร่มโพธ์ร่มไทร
*****
ออฟไลน์ ออฟไลน์

กระทู้: 1,976



« ตอบ #3 เมื่อ: 14 มิถุนายน 2008, 05:40:14 »

// จากนั้นจะได้ตัวแปรดังนี้
//  strExifData[0]  เก็บ model
//  strExifData[1]    เก็บ Speed shuter
//  strExifData[2]    เก็บ F-Stop
//  strExifData[3]    เก็บ ISO
//  strExifData[4]    เก็บ Date
//  strExifData[5]    เก็บ  Focal Length
//  strExifData[6]    เก็บ time

// เมื่อได้ข้อมูลออกมาแล้วก็มาสร้างเป็น  Text Layer

แล้วก็มาเปลี่ยนชื่อตรงนี้ครับ

var textStr = "Copyright by Svrnuke\u000Dhttp://svrnuke.multiply.com\u000D";
textStr += strExifData[0];
textStr += "  ISO : "+ strExifData[3] +" Exposure : " + strExifData[1];
textStr += "\u000DAperture : "+strExifData[2]+" Focal Length : "+ strExifData[5];
textStr += "\u000DDate : " + strExifData[4] + " Time : " + strExifData[6];
txtRef.contents = textStr;
txtRef.size = "15";
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

http://svrnuke.multiply.com   -> เข้าไปเยี่ยมชมกันบ้างนะครับ
Svl2Nuk3
รุกขเทวดา
ร่มโพธ์ร่มไทร
*****
ออฟไลน์ ออฟไลน์

กระทู้: 1,976



« ตอบ #4 เมื่อ: 14 มิถุนายน 2008, 05:40:42 »

++ จบข่าว ++


* DSC_0569.jpg (140.01 KB, 750x503 - ดู 827 ครั้ง.)
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

http://svrnuke.multiply.com   -> เข้าไปเยี่ยมชมกันบ้างนะครับ
indy
indy : ·.¸¸·´¯`·.¸¸.ஐ
ศิษย์พี่
ต้นกล้า
***
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 340


indy : ·.¸¸·´¯`·.¸¸.ஐ


« ตอบ #5 เมื่อ: 18 มิถุนายน 2008, 00:07:59 »

เอ ,, เริ่มต้นยังไงเหรอครับ ? ,,
ใน photoshop เหรอครับ ? ,,

แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

ขอมือหน่อยได้ไหม อากาศหนาวๆไม่ชอบเลย ,
ขอมือหน่อยอย่าเฉยเมย จนฉันนั้นต้องเสียใจ ,
...
http://forum.welovefoto.com/index.php/topic,3319.0.html
Svl2Nuk3
รุกขเทวดา
ร่มโพธ์ร่มไทร
*****
ออฟไลน์ ออฟไลน์

กระทู้: 1,976



« ตอบ #6 เมื่อ: 19 มิถุนายน 2008, 22:01:32 »

เอ ,, เริ่มต้นยังไงเหรอครับ ? ,,
ใน photoshop เหรอครับ ? ,,



อันดับแรกก็ Copy Script  นี้  (โหลดจากตอบครั้งแรกครับ)   ไปไว้ที่  C:\Program Files\Adobe\Adobe Photoshop CS3\Presets\Scripts

จากนั้นก็เปิดภาพ  แล้ว   คลิ๊กที่  File >>Script >> getExif   มันก็จะจัดการให้เองครับ

ที่เหลือก็ปรับแต่งตัวหนังสือนิดหน่อยครับ
เอาไว้เริ่มเขียน  Java  ดีกว่านี้จะหาอย่างอื่นมาเล่าอีกนะครับ


* Test.jpg (129.8 KB, 1281x803 - ดู 812 ครั้ง.)
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

http://svrnuke.multiply.com   -> เข้าไปเยี่ยมชมกันบ้างนะครับ
indy
indy : ·.¸¸·´¯`·.¸¸.ஐ
ศิษย์พี่
ต้นกล้า
***
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 340


indy : ·.¸¸·´¯`·.¸¸.ஐ


« ตอบ #7 เมื่อ: 09 สิงหาคม 2008, 17:44:16 »

โอ้ ขอบคุณมากครับ ,, เดี๋ยวจะลองทำดูครับผม ,,
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

ขอมือหน่อยได้ไหม อากาศหนาวๆไม่ชอบเลย ,
ขอมือหน่อยอย่าเฉยเมย จนฉันนั้นต้องเสียใจ ,
...
http://forum.welovefoto.com/index.php/topic,3319.0.html
noip184
เมล็ดพันธ์
*
ออฟไลน์ ออฟไลน์

กระทู้: 1


« ตอบ #8 เมื่อ: 22 สิงหาคม 2008, 23:15:52 »

ขอบคุณครับ คือผมทดลองใช้ PHP เขียนเพื่ออ่านค่า EXIF ปรากฏว่าตรงค่า EXIF GPS มันขึ้นอย่างนี้อะครับ

GPSGPSLatitude:Array-->Array (
  • => 13/1 [1] => 44/1 [2] => 6240/1000 )
GPSGPSLatitudeRef:N-->N
GPSGPSLongitude:Array-->Array (
  • => 100/1 [1] => 33/1 [2] => 13404/1000 )
GPSGPSLongitudeRef:E-->E
GPSGPSTimeStamp:Array-->Array (
  • => 2/1 [1] => 7/1 [2] => 42/1 )

ไม่เข้าใจว่าค่าเหล่นี้มันคืออะไรท่านใดพอทราบรบกวนให้ความรู้กับผู้รู้น้อยด้วยครับ ขอบคุณมากครับ
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า
Svl2Nuk3
รุกขเทวดา
ร่มโพธ์ร่มไทร
*****
ออฟไลน์ ออฟไลน์

กระทู้: 1,976



« ตอบ #9 เมื่อ: 23 สิงหาคม 2008, 11:43:53 »

เป็นค่าละติจูด  กับลองติจูด  หรือตำแหน่งบนโลกครับ
ตัวที่ทำให้ได้ค่าละติจูดกับลองติจูดเค้าเรียกว่า  GPS   (Gobal Position System)
โดยกล้องบางรุ่นจะมี  GPS  ติดมาในตัวครับ  แต่ขอเสียก็คือเมื่ออยู่ในอาคาร  หรือในตึก   ค่าพิกัดเหล่านี้จะผิดพลาดไปเยอะครับ


เรื่อง GPS -> http://board.robotnu.com/index.php?topic=7.0

ส่วน  format ไม่แน่ใจครับไม่เคยเจอรูปที่มี GPS  สักทีครับ
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

http://svrnuke.multiply.com   -> เข้าไปเยี่ยมชมกันบ้างนะครับ
effectjam
เมล็ดพันธ์
*
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 5



« ตอบ #10 เมื่อ: 05 กันยายน 2008, 10:57:36 »

ขอบคุณคับ Embarrassed
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า
หน้า: [1] พิมพ์ 
กระโดดไป:  
Play Free Games Online | Brand name coupons | Free Links Directory | Low Price Shop online | Play Free Games Online
Ripstik Caster Board | Omron Blood Pressure Monitor | Bakugan Battle Arena | Philips Sonicare Toothbrush | Apple iPod Accessories