PHP memiliki kemampuan membaca image / gambar. Dengan kemampuan itu tentu saja PHP mampu membaca data-data asal yang terdapat dalam image tersebut. Biasanya data tersebut dinamakan metadata. Proses pembacaan metadata itu cukup mudah, yaitu dengan memanfaatkan fungsi exif_read_data(). Misal saya memiliki sebuah gambar berekstensi JPEG dengan nama satu.JPEG, yang berasal dari hasil jepretan kamera digital. Maka data asal dari gambar tersebut dapat dibaca dengan perintah berikut :
1 2 3 4 |
$data = exif_read_data('images/satu.jpg'); echo "< pre >"; print_r( $data ); echo " |
“;
Data yang muncul kira-kira seperti berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
Array ( [FileName] => satu.jpg [FileDateTime] => 1335936620 [FileSize] => 5441417 [FileType] => 2 [MimeType] => image/jpeg [SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROP [COMPUTED] => Array ( [html] => width="4320" height="3240" [Height] => 3240 [Width] => 4320 [IsColor] => 1 [ByteOrderMotorola] => 0 [ApertureFNumber] => f/2.9 [UserComment] => [UserCommentEncoding] => UNDEFINED [Copyright] => Copyright 2010 [Thumbnail.FileType] => 2 [Thumbnail.MimeType] => image/jpeg ) [ImageDescription] => [Make] => BenQ Corporation [Model] => DC C143X [Orientation] => 1 [XResolution] => 288/3 [YResolution] => 288/3 [ResolutionUnit] => 2 [Software] => 1.7600 [DateTime] => 2012:05:02 12:30:21 [YCbCrPositioning] => 2 [Copyright] => Copyright 2010 [Exif_IFD_Pointer] => 322 [THUMBNAIL] => Array ( [Compression] => 6 [Orientation] => 1 [XResolution] => 72/1 [YResolution] => 72/1 [ResolutionUnit] => 2 [JPEGInterchangeFormat] => 4290 [JPEGInterchangeFormatLength] => 7287 [YCbCrPositioning] => 2 ) [ExposureTime] => 1/279 [FNumber] => 29/10 [ExposureProgram] => 2 [ISOSpeedRatings] => 100 [ExifVersion] => 0220 [DateTimeOriginal] => 2012:05:02 12:30:21 [DateTimeDigitized] => 2012:05:02 12:30:21 [ComponentsConfiguration] => � [CompressedBitsPerPixel] => 500/100 [ShutterSpeedValue] => 8124/1000 [ApertureValue] => 3071/1000 [ExposureBiasValue] => 0/100 [MaxApertureValue] => 3171/1000 [MeteringMode] => 4 [LightSource] => 0 [Flash] => 24 [FocalLength] => 6300/1000 [MakerNote] => IP1:1 exp 130 agc: 95 cal_agc : 128 P2C : 16 . . . |
dan seterusnya. Hanya diambil sebagian karena cukup panjang. Pada bagian tersebut terlihat hampir semua properti pembuatan gambar tersebut. Antara lain dibuat kapan, dengan menggunakan kamera apa, ukuran berapa. Untuk keperluan programming biasanya hasil ini akan diatur dengan penguraian array lanjut. Antara lain kira-kira seperti berikut:
1 2 3 4 5 6 7 8 9 |
$data = exif_read_data('images/satu.jpg'); foreach($data as $key=>$val) { if(is_array($val)) { foreach($val as $k=>$v) { echo $key."[$k]: $v<br />\n"; } } else echo "$key: ".@substr($val,0,40)."<br />\n"; } |
Hasilnya kira-kira akan seperti berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
FileName: IMG_0495.JPG FileDateTime: 1335936620 FileSize: 5441417 FileType: 2 MimeType: image/jpeg SectionsFound: ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROP COMPUTED[html]: width="4320" height="3240" COMPUTED[Height]: 3240 COMPUTED[Width]: 4320 COMPUTED[IsColor]: 1 COMPUTED[ByteOrderMotorola]: 0 COMPUTED[ApertureFNumber]: f/2.9 COMPUTED[UserComment]: COMPUTED[UserCommentEncoding]: UNDEFINED COMPUTED[Copyright]: Copyright 2010 COMPUTED[Thumbnail.FileType]: 2 COMPUTED[Thumbnail.MimeType]: image/jpeg ImageDescription: Make: BenQ Corporation Model: DC C143X Orientation: 1 XResolution: 288/3 YResolution: 288/3 ResolutionUnit: 2 Software: 1.7600 DateTime: 2012:05:02 12:30:21 YCbCrPositioning: 2 Copyright: Copyright 2010 Exif_IFD_Pointer: 322 THUMBNAIL[Compression]: 6 THUMBNAIL[Orientation]: 1 THUMBNAIL[XResolution]: 72/1 THUMBNAIL[YResolution]: 72/1 THUMBNAIL[ResolutionUnit]: 2 THUMBNAIL[JPEGInterchangeFormat]: 4290 THUMBNAIL[JPEGInterchangeFormatLength]: 7287 THUMBNAIL[YCbCrPositioning]: 2 ExposureTime: 1/279 FNumber: 29/10 ExposureProgram: 2 ISOSpeedRatings: 100 ExifVersion: 0220 DateTimeOriginal: 2012:05:02 12:30:21 DateTimeDigitized: 2012:05:02 12:30:21 ComponentsConfiguration: � CompressedBitsPerPixel: 500/100 ShutterSpeedValue: 8124/1000 ApertureValue: 3071/1000 ExposureBiasValue: 0/100 MaxApertureValue: 3171/1000 MeteringMode: 4 LightSource: 0 Flash: 24 FocalLength: 6300/1000 MakerNote: IP1:1 exp 130 agc: 95 cal_agc : 128 P2C UserComment: ���������������������������������������� SubSecTime: 0� FlashPixVersion: 0100 ColorSpace: 1 ExifImageWidth: 4320 ExifImageLength: 3240 RelatedSoundFile: InteroperabilityOffset: 4260 FileSource: SceneType: ExposureMode: 0 WhiteBalance: 0 DigitalZoomRatio: 100/100 FocalLengthIn35mmFilm: 36 SceneCaptureType: 33 Contrast: 0 Saturation: 0 Sharpness: 0 InterOperabilityIndex: R98 InterOperabilityVersion: 0100 |
Dengan demikian, sebenarnya situs-situs fotografi, atau lomba fotografi akan dapat mengetahui bahwa sebenarnya gambar tersebut asli atau sudah ter-edit oleh software lain seperti potoshop dan lain sebagainya, meski ternyata metadata ini juga dapat dilakukan editing, yang akan kita pelajari dalam section lain. Ada yang berminat menjadi roy suryo moderen sebagai ahli metadata?? Silakan belajar lebih lanjut . Untuk exif_read_data, hanya dapat digunakan jenis file JPG dan TIFF. Anda juga dapat mengkombinasikan dengan form upload file.
Sekian, semoga bermanfaat