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. İlan eklerken bu tip sorunları atmadan önce düzenlemek yerine, kullanıcı uğraşmasın diye PHP de EXIF bilgisine göre otomatik düzenlemek için şu şekilde fonksiyonlarımız. benim yazdığım Codeigniter 3.x için : helper if (!function_exists('image_fix_orientation')) { function image_fix_orientation($sourcePath,$flag=false) { $ci =& get_instance(); $ci -> load -> library('image_lib'); $imgdata = exif_read_data($sourcePath,'IFD0'); $config = ['image_library' => 'gd2', 'source_image' => $sourcePath]; $ci -> load -> library('image_lib', $config); switch ($imgdata['Orientation']) { case 3: $config['rotation_angle'] = '180'; break; case 6: $config['rotation_angle'] = '270'; break; case 8: $config['rotation_angle'] = '90'; break; } if($ci->image_lib->initialize($config)) $flag = true; else $flag=false; if(!$ci -> image_lib -> rotate()) echo $this->image_lib->display_errors(); return $flag; } } controller içinde : public function upladImage(){ //....ekleme adımları yapıldıktan sonra.... if ($this -> upload -> data()) {//resim yüklendiyse yönünü düzelt. $this->load->helper('helperAdi'); image_fix_orientation($resimYolu); } } Frameworksüz sadece PHP ile kullanabileceğiniz fonsiyonları kaynağından kopyala/yapıştır yaparsam; GD : function image_fix_orientation(&$image, $filename) {//2 adımda da dosya yolunu yollamalısınız. $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; } } } Tek satırda GD ile : function image_fix_orientation(&$image, $filename) { $image = imagerotate($image, array_values([0, 0, 0, 180, 0, 0, -90, 0, 90])[@exif_read_data($filename)['Orientation'] ?: 0], 0); } ImageMagic ile : function image_fix_orientation($image) { if (method_exists($image, 'getImageProperty')) { $orientation = $image->getImageProperty('exif:Orientation'); } else { $filename = $image->getImageFilename(); if (empty($filename)) { $filename = 'data://image/jpeg;base64,' . base64_encode($image->getImageBlob()); } $exif = exif_read_data($filename); $orientation = isset($exif['Orientation']) ? $exif['Orientation'] : null; } if (!empty($orientation)) { switch ($orientation) { case 3: $image->rotateImage('#000000', 180); break; case 6: $image->rotateImage('#000000', 90); break; case 8: $image->rotateImage('#000000', -90); break; } } } Etiketler : otomatik fotograf yonu duzeltme, PHP EXIF, PHP otomatik fotograf duzeltme, PHP fotograf oryantasyonu duzeltme, PHP orientation, PHP, Codeigniter fotograf orientation, Codeigniter EXIF, Codeigniter fotograf oryantasyonu, Codeigniter otomatik fotograf duzeltme, codeigniter Paylaş!