PHP ile EXIF bilgisine göre resim döndürme

Dijital kameralar ve akıllı telefonlarla çekilen fotoğrafların EXIF bilgilerinde cihazın hangi açıyla (sola veya sağa yatay, düz veya ters düşey) tutularak resmin çekildiğini, yani oryantasyonunu temsil eden bir bilgi bulunabilir. Bazı görüntüleme programları veya tarayıcılar bu bilgiyi dikkate alarak resmi çevirirken bazıları bunu yapmıyor. Bilgisayarda bakarken düzgün görünen fotoğraf, web sitesine yüklendiğinde yatık çıkabiliyor.

Bunun üstesinden  exif_read_data()  aracılığıyla oryantasyon bilgisini alarak gelmek mümkün. Kaynağından kopyala/yapıştır yaparsam;

$imageimagecreatefromjpeg() gibi bir fonksiyonla $filename adlı dosyadan yüklenmiş resim nesnesi. Bu fonksiyon çağrıldığında EXIF bilgisine göre çevrilmiş bir resim nesnesi döndürecektir, artık resim istenen şekilde kullanılabilir, dosyaya kaydedilebilir.

Detaylı tartışmayı ve GD’ye ek olarak ImageMagick kütüphanesiyle çalışacak örnek kodu da kaynakta bulabilirsiniz.

Kaynak: Stack Overflow: PHP read_exif_data and Adjust Orientation

Not: Syntax highlighting için Crayon Syntax Highlighter kullanmaya başladım. Gayet kolay ve geniş dil desteği var.

— Serdar

Valthoron joined the game.

Selamlar.

Programlama ile ilgili sık sık sorunlarla, bilmediğim şeylerle karşılaşıyorum. Bunlara kendi ürettiğim veya çeşitli kaynaklardan bulduğum çözümler oluyor. Gelin görün ki aynı sorunla başka projelerde karşılaştığımda daha önceden bulduğum çözümün ne olduğunu tam hatırlayamadığım oluyor. Sık sık kendimi eski projelere bakarken, tarayıcımın sık kullanılan ve geçmiş klasörlerini karıştırırken buluyorum. Ancak bunların çok da rahat olmadığına karar verdim:

  • Her zaman eski projelerime erişimim bulunmuyor.
  • Bulduğum her çözümün adresini düzenli ve kolayca bulunabilir, kategorize şekilde kaydetmem mümkün olmuyor.
  • Çok eskiden bulduğum çözümleri tarayıcı geçmişinde bulamıyorum.
  • Sayfadan sayfaya atlayarak bulduğum çözümleri tekrar bulamıyorum.
  • Çözümün bulunduğu sayfalar silinmiş, kapanmış oluyor.

İşte bu sebeple bu blogu açmaya karar verdim. Bulduğum çözümleri, etiketlerle ve bazen kendime ait notlarla birlikte, güvenilir sitelere bağlantı olarak, yoksa kopyala/yapıştır yöntemiyle burada biriktirmeye çalışacağım. Bunlarla beraber genel olarak programlamayla ilgili bazı makaleleri, başta oyunlar ve teknoloji olmak üzere birtakım kişisel ilgilerimi ve atıp tutmalarımı da ara sıra buraya koyabilirim.

Şunu söylememde yarar var; ben bir bilgisayar mühendisi veya Computer Sciences mezunu değilim. Deyim yerindeyse mektepli değil, alaylıyım. Uyguladığım çözümler çeşitli programlama paradigmaları, pattern‘lar, bellek yönetimi, doğru kod yazma pratikleri, konvansiyonlar falan filan açılardan doğru, hızlı, veya verimli olmayabilir. İleride bakımı yapılamayacak (maintainability), sadece günü kurtaran çözümler kullanabilirim. Şiddetle savunduğum ve uyguladığım birtakım konvansiyonlarım yoktur, hatta tarzımın oturduğunu bile söyleyemem, ara sıra değişir. Dolayısıyla bu blogdaki bir çözümden faydalanmak istediğinizde bunlar aklınızın bir kenarında bulunsun.

İlk blog iletim de böylece bitmiş olsun. Bir ara syntax highlighting yapacak eklenti bulmalıyım.

— Serdar