Skip to content

Catatan buruh IT

  • Home
  • Demos
  • Download
  • PHP
  • MySQL
  • HTML
  • Jquery
  • CSS
  • Linux
  • javascript
  • Networking

photo

[Tips] Membaca Metadata Image JPEG/TIFF dengan PHP

Posted on May 22, 2012May 22, 2012 by bimosaurus

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 :

PHP
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:

PHP
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

Artikel terkait

  • [Contoh] Cara Membuat Grafik dengan JPGraph dengan PHP dan MySQL
  • [Contoh] Cara Membuat Grafik Multi Line / Banyak Garis dengan PHP, MySQL, dan JQuery HighChart
  • [Contoh] Cara Menampilkan Jam Server Secara Real Time
  • [Contoh] Cara Menumpuk Join Dua Gambar dengan PHP ( watermark )
  • [Contoh] Cara Menentukan Font pada Watermark Gambar dengan PHP
  • [Contoh] Menyiasati Paging dengan JQuery JCarousel
  • Perihal NULL dalam SQL
  • [Contoh] Cara Mengexport Data SQL ke File Excel 2007 ( xlsx ) dari MySQL dengan PHP
Posted in PHPTagged exif, foto, image, metadata, photo, phpLeave a comment

Pages

  • About Personal Owner
  • Agenda
  • Contributor
  • Search Result
  • Tentang Blog Ini
  • Work

Categories

  • CSS
  • curl
  • hacking
  • Hardware
  • HTML
  • internet
  • javascript
  • Jquery
  • js
  • json
  • Jual
  • laptop
  • lfi
  • Linux
  • MySQL
  • Networking
  • pengumuman
  • peta
  • PHP
  • SMS Gateway
  • ssh
  • tips
  • Uncategorized
  • Web Developing
  • webchat
  • webfolio
  • webserver
  • wordpress

Archives

  • June 2019
  • March 2019
  • May 2018
  • April 2018
  • October 2017
  • June 2017
  • February 2017
  • July 2016
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • June 2014
  • March 2014
  • February 2014
  • December 2013
  • September 2013
  • July 2013
  • June 2013
  • March 2013
  • February 2013
  • December 2012
  • November 2012
  • August 2012
  • July 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • November 2011
  • September 2011
Proudly powered by WordPress