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 :
$data = exif_read_data('images/satu.jpg');
echo "< pre >";
print_r( $data );
echo "< /pre >";
Data yang muncul kira-kira seperti berikut:
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:
$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
\n";
}
} else
echo "$key: ".@substr($val,0,40)."
\n";
}
Hasilnya kira-kira akan seperti berikut:
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