Yakın zamanda yeni bir fotoğraf makinesi aldım ve amatör olarak fotoğraf çekmeye başladım.. Bundan dolayıda hemen bir 500px.com üyeliği aldım ve fotoğraflarımı yüklerken orada bir şey dikkatimi çekti, hatta dikkat çekmekle birlikte çok hoşuma gitti ???? Yüklediğim fotoğrafa ait bilgileri görebiliyordum, hangi marka ve model fotoğraf makinası ile çektiğimi, zoom değerini vs. vs..
Daha sonra bunu php ile nasıl yapabileceğimi biraz araştırdıktan sonra bir şeyler buldum, test ettim ve güzel bir şekilde çalıştığını gördüm. Bunu sizlerle de paylaşmak istiyorum..
Not: Beni 500px üzerinden takip etmek isterseniz, adresim aşağıdadır ????
http://500px.com/TayfunErbilen
Bir şeyi arıyorsanız bir anahtar kelimeniz olmalı..
Bizim anahtar kelimemiz belli; “Exif“
Bu anahtar kelime ile diğer diller içinde bunu bulabiliriz..
Bkz: javascript Exif
Php’de bu işi yapan exif_read_data() adında bir fonksiyon.
http://www.php.net/manual/en/function.exif-read-data.php
En basit haliyle yapmanız gereken tek şey, resmin yolunu belirtmeniz.
<?php
$exif = exif_read_data('tayfunerbilen.png');
print_r( $exif );
?>
Ve çıktısı en basit haliyle şöyle olacaktır;
Array
(
[FileName] => IMG_5236.JPG
[FileDateTime] => 1378615652
[FileSize] => 3438950
[FileType] => 2
[MimeType] => image/jpeg
[SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROP, MAKERNOTE
[COMPUTED] => Array
(
........
Şimdi bizim için önemli olan fotoğraf bilgilerini alıp değişkenlere aktaralım ve ekrana yazdıralım ????
<?php
$exif = exif_read_data('IMG_5236.JPG');
$kamera = $exif['Make'];
$kameraModel = $exif['Model'];
$fDuragi = $exif['COMPUTED']['ApertureFNumber'];
$isoHizi = $exif['ISOSpeedRatings'];
$pozlandirma = $exif['ExposureProgram'];
$odakUzunluk = $exif['FocalLength'];
$deklansorHiz = $exif['ExposureTime'];
$cekilmeZamani = $exif['DateTime'];
>
Ve yazdıralım;
<strong>Kamera:</strong> <?php echo $kamera; ?><hr />
<strong>Kamera Modeli:</strong> <?php echo $kameraModel; ?><hr />
<strong>F Durağı:</strong> <?php echo $fDuragi; ?><hr />
<strong>ISO Hızı:</strong> <?php echo $isoHizi; ?><hr />
<strong>Pozlandırma:</strong> <?php echo $pozlandirma; ?><hr />
<strong>Odak Uzunluğu:</strong> <?php echo $odakUzunluk; ?> mm<hr />
<strong>Deklanşör Hızı:</strong> <?php echo $deklansorHiz; ?> mm<hr />
<strong>Çekilme Zamanı:</strong> <?php echo $cekilmeZamani; ?><hr />
Ancak her fotoğrafda olmayacağını unutmayın. Bu yüzden isset() ve empty() kullanarak kontrollü bir şekilde ekrana yazdırmayı unutmayın.
javascript ile Fotoğraf Bilgilerini Almak
Bunun için google’a “javascript exif” diye aratmanız yeterli. Bir çok eklenti mevcut, ben bir tanesini kullanarak kolayca işlem yapabildim.. Kullandığım eklenti;
https://github.com/jseidelin/exif-js
Kullanımı;
Önce jquery kütüphanesini ve eklentinin 2 js dosyasını sayfaya dahil ediyoruz. Daha sonra input change olduğunda bu olayı yakalayıp fotoğrafın yolunu eklentiye gönderiyor ve değerleri alarak istediğimiz herhangi bir yere yazdırıyoruz..
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="binaryajax.js"></script>
<script type="text/javascript" src="exif.js"></script>
<meta charset="utf8" />
<style type="text/css">
* {
padding: 0;
margin: 0;
list-style: none;
border: 0;
font-family: Arial;
font-size: 12px
}
body {
padding: 15px;
background: #f5f5f5
}
.container {
width: 400px;
margin: 25px auto
}
.fotograf {
border: 1px solid #ddd;
padding: 15px;
background: #fff;
display: block;
margin-bottom: 10px
}
#ozellikler {
border: 1px solid #ddd;
border-bottom: none;
margin-top: 10px;
display: none
}
#ozellikler li {
padding: 7px;
background: #fff;
border-bottom: 1px solid #ddd
}
#ozellikler li:nth-child(even) {
background: #eee
}
</style>
</head>
<body>
<div class="container">
<label class="fotograf">
<strong>Fotoğraf Seçin:</strong>
<input type="file" accept="image/jpg" id="fotograf">
</label>
<div id="result">
<ul id="ozellikler"></ul>
</div>
</div>
<script type="text/javascript">
if (window.File && window.FileReader && window.FileList && window.Blob) {
$('#fotograf').change(function(e){
var fotograf = e.target.files[0];
var ozellikler = $('ul#ozellikler');
EXIF.getData(fotograf, function(){
ozellikler.fadeIn().html('');
var kamera = EXIF.getTag(this, 'Make');
if ( kamera ) ozellikler.append('<li><strong>Kamera:</strong> ' + kamera + '</li>');
var model = EXIF.getTag(this, 'Model');
if ( model ) ozellikler.append('<li><strong>Model:</strong> ' + model + '</li>');
var fDuragi = EXIF.getTag(this, 'FNumber');
if ( fDuragi ) ozellikler.append('<li><strong>F Durağı:</strong> ' + fDuragi + '</li>');
var isoHizi = EXIF.getTag(this, 'ISOSpeedRatings');
if ( isoHizi ) ozellikler.append('<li><strong>ISO Hızı:</strong> ' + isoHizi + '</li>');
var pozlandirma = EXIF.getTag(this, 'ExposureBias');
if ( pozlandirma ) ozellikler.append('<li><strong>Pozlandırma:</strong> ' + pozlandirma + '</li>');
var odakUzunluk = EXIF.getTag(this, 'FocalLength');
if ( odakUzunluk ) ozellikler.append('<li><strong>Odak Uzunluğu:</strong> ' + odakUzunluk + '</li>');
var deklansorHiz = EXIF.getTag(this, 'ExposureTime');
if ( deklansorHiz ) ozellikler.append('<li><strong>Daklanşör Hızı:</strong> ' + deklansorHiz + '</li>');
var cekilmeZamani = EXIF.getTag(this, 'DateTime');
if ( cekilmeZamani ) ozellikler.append('<li><strong>Çekilme Zamanı:</strong> ' + cekilmeZamani + '</li>');
});
});
}
</script>
</body>
</html>