Fotoğraf Özelliklerini Bulmak (Php, Js)

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..

Fotoğraf Özelliklerini Bulmak (Php, Js)

Fotoğraf Özelliklerini Bulmak (Php, Js)

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
        (
            [html] => width="3888" height="2592"
            [Height] => 2592
            [Width] => 3888
            [IsColor] => 1
            [ByteOrderMotorola] => 0
            [CCDWidth] => 22mm
            [ApertureFNumber] => f/5.6
            [UserComment] => 
            [UserCommentEncoding] => UNDEFINED
            [Thumbnail.FileType] => 2
            [Thumbnail.MimeType] => image/jpeg
        )

    [Make] => Canon
    [Model] => Canon EOS 1000D
    [Orientation] => 1
    [XResolution] => 72/1
    [YResolution] => 72/1
    [ResolutionUnit] => 2
    [DateTime] => 2013:09:08 07:47:31
    [YCbCrPositioning] => 2
    [Exif_IFD_Pointer] => 196
    [THUMBNAIL] => Array
        (
            [Compression] => 6
            [XResolution] => 72/1
            [YResolution] => 72/1
            [ResolutionUnit] => 2
            [JPEGInterchangeFormat] => 9620
            [JPEGInterchangeFormatLength] => 6388
        )

    [ExposureTime] => 1/60
    [FNumber] => 56/10
    [ExposureProgram] => 0
    [ISOSpeedRatings] => 400
    [ExifVersion] => 0221
    [DateTimeOriginal] => 2013:09:08 07:47:31
    [DateTimeDigitized] => 2013:09:08 07:47:31
    [ComponentsConfiguration] => 
    [ShutterSpeedValue] => 393216/65536
    [ApertureValue] => 327680/65536
    [ExposureBiasValue] => 0/1
    [MeteringMode] => 5
    [Flash] => 9
    [FocalLength] => 55/1

... devam ediyor

Ş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 />

Fotoğraf Özelliklerini Bulmak (Php, Js)

Ancak her fotoğrafda olmayacağını unutmayın. Bu yüzden isset() ve empty() kullanarak kontrollü bir şekilde ekrana yazdırmayı unutmayın.

DEMO

http://www.erbilen.net/demo/php-exif/index.php

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>

DEMO

http://www.erbilen.net/demo/js-exif/index.html

Yayınlayan

Tayfun Erbilen

2009’dan beri web işleriyle uğraşan, aynı zamanda amatör müziklede ilgilenen sıradan birisi..

“Fotoğraf Özelliklerini Bulmak (Php, Js)” üzerine 9 yorum

  1. Kardeşim php olan şeklini denemeye çalıştım ama "Fatal error: Call to undefined function exif_read_data()" şeklinde bir hata verdi.
    Program olarak wampserver , php versiyonu ise 5.4.3 –> Çalışması için ne yapmam gerek tam olarak. Yani bu hata neden kaynaklanıyordur.
    Teşekkür ederim.

  2. @Özkan, eğer fonksiyonu bulamıyorsa exif eklentisini kendin sunucuya kurman gerekecek.
    PHP eklenti kurulumunu biliyorsan kolayca kurulumunu yapabilirsin, bilmiyorsan birazcık araştırman gerekli 🙂

    Sen yinede emin olmak için bir info.php dosyası oluşturup içine <?php phpinfo(); ?> yazıp çalıştır. Eğer eklentilerde bulamıyorsan yüklemen gerek.

  3. Öncelikle cevabın için teşekkür ederim.PHP de eklenti kurmayı tam olarak bilmiyorum ama internetten araştıracam. PHP programı (server) olarak hangi programı ve hangi sürümünü kullanıyorsun onu öğrenebilir miyim? Ve yeri burası değil ama Prototurk.com sitesini tekrardan aktif edecek misin yoksa erbilen.net yönlendirilmiş bir şekilde devam edecek. Bu arada twitter hesabını takip ederken gördüm ve sevindim "http://www.w3.org/Style/CSS/learning&quot; sitesinde seninde isminin geçmesi gerçekten çok güzel birşey, tebrik eder ve başarıların devamını dilerim.İnşaAllah bizde senin gibi oralarda olmasak bile o seviyeye yakın bir yerlere geliriz.

  4. Ben php'nin 5.3.26 sürümünü kullanıyorum. Normal şartlarda sende yüklü olması gerekirdi ancak her sunucuda olmayabiliyor, belkide standart bir şey olmadığı için olabilir 🙂 Prototürk'ü sonlandırdım ancak takip edenlerin zor duruma düşmemesi için burada bir sayfa hazırladım. Aklımda yeni bir proje var, onu yapana kadar (zamanı belli değil) kişisel sitem üzerinden dersler yayınlamaya devam edeceğim. Ve teşekkür ederim, umarım sizde iyi yerlere gelirsiniz. Kolay gelsin.

  5. Bu arada sorunun çözümünü şu şeklide hallettim.WampServer programını açtıktan sonra,bu arada program bende Türkçe.Programı simgesi sağ alt köşeye yeşil bir sekilde simgesiş geliyor.Simgenin üzerinde fare ile sol tuşa bastıktan sonra, açılan menüden sırasıyla; "PHP –> PHP uzantıları –> php_exif" e tıkladıktan sonra (yani tik işareti olacak), programın sağ alttaki simgesi önce turuncuya sonra tekrar yeşile dönünce oluyor.Eğer yeşile dönmezse; Ya simge üzerinde fare ile sol tuşa basıp "Tüm Servisleri Yeniden Başlat" a basın ya da programı kapatıp tekrar açın.Herkese kolay gelsin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir