(PHP 4 >= 4.2.0, PHP 5, PHP 7)
exif_read_data — Bir JPEG veya TIFF resminden EXIF başlıklarını okur
$dosya
[, string $bölümler
= NULL
[, bool $diziler
= false
[, bool $küçük_örnek
= false
]]] ) : arrayexif_read_data() işlevi bir JPEG veya TIFF resminden EXIF başlıklarını okur. Böylece sayısal kameralar tarafından üretilen temel veriler okunabilir.
Exif başlıkları sayısal kameralar tarafından üretilen JPEG/TIFF resimlerde bulunması için tasarlanmışlarsa da ne yazık ki, her sayısal kamera imalatçısı resim başlıklarının elde edilmesi konusunda farklı yaklaşımlara sahiptirler. Bu bakımdan bazı Exif başlıkları resim üzerinde mevcut olmayabilir.
Height ve Width başlıkları getimagesize() işlevinin yaptığı gibi hesaplandığından döndürülen başlığın birer parçası olmamalıdırlar. html başlığı normal HTML içinde kullanılacak metnin yükseklik/genişlik dizgesidir.
Bir Exif başlığı bir telif hakkı bilgisi içerdiği takdirde, bu iki değerden
oluşur. Çözüm Exif 2.10 standadıyla uyumsuz olup COMPUTED
bölümü hem Copyright.Photographer hem de
Copyright.Editor başlıklarını içerirken
IFD0 bölümleri iki girdiyi ayıran NULL
karakterli bayt
dizisini içerir. Eğer veri türü yanlışsa sadece ilk girdi döner (Exif'in
normal davranışı). COMPUTED bölümü ayrıca,
Copyright dizgesini de içerir ve bu dizge
ya özgün telif hakkı dizgesini ya da fotoğraf ve eser düzenleyici telif
haklarını içeren dizgeyi içerir.
UserComment yaftası Copyright yaftası ile aynı sorunlara sahiptir. O da iki değer saklayabilir. İlki kullanılan kodlama, ikincisi değerin kendisidir. Bu durumda, IFD bölümü sadece kodlamayı ve bayt dizisini içerir. COMPUTED bölümü UserCommentEncoding ve UserComment girdilerinin ikisini de saklar. UserComment girdisi her iki durumda da mevcuttur, dolayısıyla IFD0 bölümündeki değere tercihan kullanılmış olmalıdır.
exif_read_data() işlevi ayrıca, EXIF belirtimine uygun olarak EXIF veri başlıklarını da doğrular.
Bilginize:
Windows ME/XP bir kameraya bağlanırken Exif başlıklarını temizler.
dosya
Okunacak resim dosyasının ismi. Bir URL belirtilemez.
bölümler
Sonuç dizisinin üretiminde kullanılmak üzere dosyadaki başlıkların
virgül ayraçlı listesi. Belirtilen başlıkların hiçbiri bulunamazsa
işlev FALSE
döndürür.
FILE | FileName, FileSize, FileDateTime, SectionsFound (Dosyaİsmi, DosyaBoyu, DosyaTarihiSaati, BölümlarVar) |
COMPUTED | html, Width, Height, IsColor (html, genişlik, yükseklik, Renklidir) ve varsa başkaları. Height ve Width, getimagesize() işlevinin yaptığı gibi hesaplanır, dolayısıyla bunlar döndürülen başlığın parçaları olmamalıdır. Ayrıca, html, normal HTML içinde kullanılacak height/width dizgesidir. |
ANY_TAG | IFD0, EXIF, ... gibi bir yaftaya sahip her türlü bilgi |
IFD0 | IFD0'ın tüm yaftalanmış bilgisi. Normal resim dosyalarında burada resim boyutu ve saire bulunur. |
THUMBNAIL | Dosya ikinci bir IFD'ye sahipse resmin küçük bir örneğini içerdiği varsayılır. Küçük resim örneği ile ilgili tüm veriler bu bölümde saklanır. |
COMMENT | JPEG resimlerin açıklama başlıkları. |
EXIF | EXIF bölümü IFD0 bölümünün bir alt bölümüdür. Burada resim hakkında çok daha fazla bilgi bulunur. Bu girdilerin çoğu sayısal kamera ile ilgilidir. |
diziler
Her bölümün bir dizi haline getirilip getirilmeyeceğini belirler. COMPUTED, THUMBNAIL ve COMMENT bölümleri, diğer bölümlerle karışmaması için daima bir dizi haline getirilirler.
küçük_örnek
TRUE
belirtilmişse küçük resim örneğinin kendisi okunur. Aksi
takdirde, sadece yaftalı veriler okunur.
Dönen değer bir dizi olup, dizi indisleri başlık isimlerini, değerler bu
başlıklarla ilgili verileri içerir. Eğer hiçbir veri döndürülemezse
exif_read_data() işlevi FALSE
döndürür.
Sürüm: | Açıklama |
---|---|
4.3.0 | Diziler dahil gömülü tüm IFD verisi okunabilir oldu. Ayrıca, gömülü küçük resim örneğinin THUMBNAIL alt dizisinde döndürülebilmesi mümkün oldu. Ayrıca, dönen değerlerle ilgili bir azami uzunluk artık söz konusu değil (bellek miktarı ile sınırlı). |
4.3.0 | PHP mbstring desteğine sahipse, kullanıcı açıklamalarının kodlaması özdevinimli olarak değiştirilebiliyor. Ayrıca, eğer kullanıcı açıklaması Evrenkod veya JIS kodlaması kullanıyorsa kodlama php.ini içindeki ayara uygun olarak özdevinimli değiştirilebiliyor. |
4.3.0 | Eğer resim bir IFD0 verisi içeriyorsa COMPUTED bölümü artık, kıymetli baytın başta olduğu bayt sıralamasının kullanıldığı (motorola) bayt sıralaması için 1, diğeri (intel) için 0 değerini içeren bir ByteOrderMotorola girdisine sahip. Eğer veri türü yanlışsa, COMPUTED ve UserComment artık herhangi bir telif hakkı girdisi içermiyor. |
Örnek 1 - exif_read_data() örneği
<?php
echo "test1.jpg:<br />\n";
$exif = exif_read_data('tests/test1.jpg', 'IFD0');
echo $exif===false ? "<Başlık verisi bulunamadı.<br />\n" : "Resim başlıkları içeriyor<br />\n";
$exif = exif_read_data('tests/test2.jpg', 0, true);
echo "test2.jpg:<br />\n";
foreach ($exif as $key => $section) {
foreach ($section as $name => $val) {
echo "$key.$name: $val<br />\n";
}
}
?>
Resim başlık bilgisi içermediğinden ilk çağrı başarısız olur.
Yukarıdaki örnek şuna benzer bir çıktı üretir:
test1.jpg: Başlık verisi bulunamadı. test2.jpg: FILE.FileName: test2.jpg FILE.FileDateTime: 1017666176 FILE.FileSize: 1240 FILE.FileType: 2 FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, COMMENT COMPUTED.html: width="1" height="1" COMPUTED.Height: 1 COMPUTED.Width: 1 COMPUTED.IsColor: 1 COMPUTED.ByteOrderMotorola: 1 COMPUTED.UserComment: Exif test image. COMPUTED.UserCommentEncoding: ASCII COMPUTED.Copyright: Photo (c) M.Boerger, Edited by M.Boerger. COMPUTED.Copyright.Photographer: Photo (c) M.Boerger COMPUTED.Copyright.Editor: Edited by M.Boerger. IFD0.Copyright: Photo (c) M.Boerger IFD0.UserComment: ASCII THUMBNAIL.JPEGInterchangeFormat: 134 THUMBNAIL.JPEGInterchangeFormatLength: 523 COMMENT.0: Comment #1. COMMENT.1: Comment #2. COMMENT.2: Comment #3end THUMBNAIL.JPEGInterchangeFormat: 134 THUMBNAIL.Thumbnail.Height: 1 THUMBNAIL.Thumbnail.Height: 1