exif_read_data

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

exif_read_dataBir görüntü dosyasından EXIF başlıklarını okur

Açıklama

exif_read_data(
    kaynak|string$file,
    ?string$bölümler = null,
    bool$diziler = false,
    bool$küçük_örnek = false
): array|false

Bir görüntü dosyasından 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 görüntülerde bulunması için tasarlanmışlarsa da ne yazık ki, her sayısal kamera imalatçısı görüntü başlıklarının elde edilmesi konusunda farklı yaklaşımlara sahiptirler. Bu bakımdan bazı Exif başlıkları görüntü ü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.

Bağımsız Değişkenler

kaynak

Görüntü dosyasının yeri. Bir dosya yolu (akım sarmalayıcılar belirtilebilir) veya resource türünde bir akım.

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.

FILEFileName, FileSize, FileDateTime, SectionsFound (Dosyaİsmi, DosyaBoyu, DosyaTarihiSaati, BölümlarVar)
COMPUTEDhtml, 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_TAGIFD0, EXIF, ... gibi bir yaftaya sahip her türlü bilgi
IFD0IFD0'ın tüm yaftalanmış bilgisi. Normal görüntü dosyalarında burada görüntü boyutu ve saire bulunur.
THUMBNAIL Dosya ikinci bir IFD'ye sahipse görüntünün küçük bir örneğini içerdiği varsayılır. Küçük görüntü örneği ile ilgili tüm veriler bu bölümde saklanır.
COMMENTJPEG görüntülerin açıklama başlıkları.
EXIFEXIF bölümü IFD0 bölümünün bir alt bölümüdür. Burada görüntü 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 görüntü örneğinin kendisi okunur. Aksi takdirde, sadece yaftalı veriler okunur.

Dönen Değerler

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.

Hatalar/İstisnalar

Desteklenmeyen başlıklar veya olası hata durumlarında E_WARNING ve/veya E_NOTICE seviyesinde hata üretilebilir, fakat işlev hala anlaşılabilir bilgileri okumaya çalışır.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0bölümler artık boş olabiliyor.
7.2.0kaynak bağımsız değişkeni normal dosyalardan başka artık akımları da destekliyor.
7.2.0 Aşağıdaki EXIF biçemlerine destek eklendi:
  • Samsung
  • DJI
  • Panasonic
  • Sony
  • Pentax
  • Minolta
  • Sigma/Foveon
  • AGFA
  • Kyocera
  • Ricoh
  • Epson

Örnekler

Ö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" : "Görüntü 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";
}
}
?>

Görüntü 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

Örnek 2 - PHP 7.2.0 itibariyle exif_read_data() akımları destekliyor

<?php
// Bir dosya açar, bu ikil kipte olmalı
$fp = fopen('/path/to/image.jpg', 'rb');

if (!
$fp) {
echo
'Hata: Görüntü okumak için açılamadı';
exit;
}

// Exif başlıklarını okumaya çalış
$headers = exif_read_data($fp);

if (!
$headers) {
echo
'Hata: Exif başlıkları okunamadı';
exit;
}

// 'COMPUTED' başlıklarını bas
echo 'EXIF Headers:' . PHP_EOL;

foreach (
$headers['COMPUTED'] as $header => $value) {
printf(' %s => %s%s', $header, $value, PHP_EOL);
}
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

EXIF Headers: Height => 576 Width => 1024 IsColor => 1 ByteOrderMotorola => 0 ApertureFNumber => f/5.6 UserComment => UserCommentEncoding => UNDEFINED Copyright => Denis Thumbnail.FileType => 2 Thumbnail.MimeType => image/jpeg

Notlar

Bilginize:

mbstring etkinse, unicode karakterleri işlemeye çalışır ve exif.decode_unicode_motorola ve exif.decode_unicode_intel ile belirtilen karakter kümesini seçer. Exif eklentisi karakter kodlamasını bulmaya çalışmaz. Kullanıcı exif_read_data() işlevini çağırmadan önce bu iki ini yönergesinden birine uygun karakter kodlamasını belirtmelidir.

Bilginize:

kaynak bağımsız değişkeni işleve bir akım aktarmak için kullanılmışsa, akım araştırılabilri olmalıdır. Bu işlev döndükten sonra dosya göstericisinin yeri değişmeyecektir.

Ayrıca Bakınız

To Top