Welcome Guest, Not a member yet? Register   Sign In
Automatic image rotation based on EXIF data
#1

[eluser]TheCodee[/eluser]
The library automatically rotates the provided image based on the embedded EXIF data. I use it in my projects to correctly display images uploaded from mobile devices.

Code:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
* @file application/libraries/Image_autorotate.php
*/
class Image_autorotate
{
function __construct($params = NULL) {
  
  if (!is_array($params) || empty($params)) return FALSE;
  
  $filepath = $params['filepath'];
  $exif = @exif_read_data($filepath);
  
  if (empty($exif['Orientation'])) return FALSE;
  
  $CI =& get_instance();
  $CI->load->library('image_lib');
  
  $config['image_library'] = 'gd2';
  $config['source_image'] = $filepath;
  
  $oris = array();
  
  switch($exif['Orientation'])
  {
   case 1: // no need to perform any changes
   break;

   case 2: // horizontal flip
   $oris[] = 'hor';
   break;
                                
   case 3: // 180 rotate left
   $oris[] = '180';
   break;
                    
   case 4: // vertical flip
   $oris[] = 'ver';
   break;
                
   case 5: // vertical flip + 90 rotate right
   $oris[] = 'ver';
   $oris[] = '270';
   break;
                
   case 6: // 90 rotate right
   $oris[] = '270';
   break;
                
   case 7: // horizontal flip + 90 rotate right
   $oris[] = 'hor';
   $oris[] = '270';
   break;
                
   case 8: // 90 rotate left
   $oris[] = '90';
   break;
  
   default: break;
  }
  
  foreach ($oris as $ori) {
   $config['rotation_angle'] = $ori;
   $CI->image_lib->initialize($config);
   $CI->image_lib->rotate();
  }
}
}

// END class Image_autorotate

/* End of file Image_autorotate.php */
/* Location: ./application/libraries/Image_autorotate.php */

Usage example:
Code:
$imageinfo = $this->upload->data();
$full_path = $imageinfo['full_path'];

// check EXIF and autorotate if needed
$this->load->library('image_autorotate', array('filepath' => $full_path));

Inspired by this post on PHP.net (thanks to the author).


Messages In This Thread
Automatic image rotation based on EXIF data - by El Forum - 10-06-2012, 07:55 PM
Automatic image rotation based on EXIF data - by El Forum - 10-07-2012, 01:55 AM
Automatic image rotation based on EXIF data - by El Forum - 10-09-2012, 08:56 PM
Automatic image rotation based on EXIF data - by El Forum - 10-21-2012, 09:03 AM



Theme © iAndrew 2016 - Forum software by © MyBB