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;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
function image_fix_orientation(&$image, $filename) { $exif = exif_read_data($filename); if (!empty($exif['Orientation'])) { switch ($exif['Orientation']) { case 3: $image = imagerotate($image, 180, 0); break; case 6: $image = imagerotate($image, -90, 0); break; case 8: $image = imagerotate($image, 90, 0); break; } } } |
$image , imagecreatefromjpeg() 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