GORAGOD.com

การอ่าน exif ของรูปภาพ และการทำลายน้ำ

exif_read_data() เป็นฟังก์ชั่น การอ่านค่า exif ของรูปภาพที่ถ่้ายมาจากกล้องดิจิตอล exif สามารถบอกถึงรายละเอียด ของรูปภาพ รวมถึงการตั้งค่าการถ่ายภาพของกล้องด้วย ในตัวอย่างนี้ เราจะอ่านค่า exif ของรูปภาพต้นฉบับ(หมายถึงรูปที่ถูกถ่ายมาจากกล้องดิจิตอล โดยที่ยังไม่ได้ผ่านการปรับแต่งใดๆ จากโปรแกรมอื่นๆภายนอก เช่น Photo Shop) แล้วมาทำการเขียนค่า exif นี้กลับลงไปในรูปภาพที่สร้างขึ้นใหม่สำหรับทำเป็น thumbnail(ลายน้ำ)
<?php
    // รูปภาพต้นฉบับ
    $image = "DSCF3250.JPG";
    // อ่าน exif
    $exif_data = exif_read_data($image);
    $make = $exif_data['Make'];
    $model = $exif_data['Model'];
    $exposure = explode("/", $exif_data['ExposureTime']);
    $exposure1 = $exposure[0] / $exposure[0];
    $exposure2 = $exposure[1] / $exposure[0];
    $fnumber = explode("/", $exif_data['FNumber']);
    $fnumber = $fnumber[0] / $fnumber[1];
    $iso = $exif_data['ISOSpeedRatings'];
    $date = $exif_data['DateTime'];
    // อ่านขนาดของรูปภาพต้นฉบับ
    $size = GetimageSize($image);
    // ขนาดของรูปภาพที่ต้องการ (resize)
    $width = 640;
    // ความกว้างใหม่ของรูป
    $height = round($width * $size[1] / $size[0]);
    // โหลดรูปภาพต้นฉบับ
    $original = ImageCreateFromJPEG($image);
    $X = ImagesX($original);
    $Y = ImagesY($original);
    // สร้างรูปใหม่
    $im = ImageCreateTrueColor($width, $height);
    // สำเนารูปภาพ
    ImageCopyResampled($im, $original, 0, 0, 0, 0, $width + 1, $height + 1, $X, $Y);
    // font
    $font = 'fonts/tahoma.ttf';
    // สีตัวอักษร
    $color = ImageColorAllocate($im, 0, 0, 0);
    // เขียน exif data ลงบนรูปภาพ
    $text = "Model : $model   F : $fnumber Exposure : $exposure1/$exposure2  ISO : $iso";
    ImagettfText($im, 16, 0, 10, $height - 10, $color, $font, $text);
    // คืนค่าเป็นรูปภาพ jpeg
    header('Content-type: image/jpeg');
    imagejpeg($im);
    ImageDestroy($im);
    ImageDestroy($original);
?>