การอ่าน 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);
?>