Plugin Directory

Changeset 695131


Ignore:
Timestamp:
04/10/2013 09:56:47 AM (13 years ago)
Author:
macbrink
Message:

Rotate and resize images based on exif information.

Location:
eazyest-gallery/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • eazyest-gallery/trunk/eazyest-gallery.php

    r695082 r695131  
    99 * Author: Brimosoft
    1010 * Author URI: http://brimosoft.nl
    11  * Version: 0.2.0-alpha-321
     11 * Version: 0.2.0-alpha-322
    1212 * Text Domain: eazyest-gallery
    1313 * Domain Path: /languages/
    1414 * License: GNU General Public License, version 3
    1515 *
    16  * @version 0.2.0 (r321
     16 * @version 0.2.0 (r322
    1717 * @package Eazyest Gallery
    1818 * @subpackage Main
  • eazyest-gallery/trunk/includes/class-eazyest-folderbase.php

    r693554 r695131  
    99 * @copyright 2012-2013 Brimosoft
    1010 * @since @since 0.1.0 (r2)
    11  * @version 0.1.0 (r308)
     11 * @version 0.2.0 (r322)
    1212 * @access public
    1313 */
     
    18521852    function sizes_metadata( $metadata, $attachment_id ) {
    18531853        if ( ! $this->is_gallery_image( $attachment_id ) )
    1854             return $metadata;   
    1855        
    1856        
     1854            return $metadata;
     1855               
    18571856        $file = get_post_meta( $attachment_id, '_wp_attached_file', true );
    18581857        if ( false !== strpos( $file, eazyest_gallery()->root() ) )
     
    18621861            $metadata['file'] = $file;
    18631862   
     1863    $orientation = 0;
     1864        if ( function_exists( 'exif_read_data' ) ) {
     1865            if ( ! isset( $metadata['eazyest_exif'] ) ) {
     1866                if ( $exif = exif_read_data( eazyest_gallery()->root() . $file ) ) {
     1867                    $orientation = isset ( $exif['Orientation'] ) ? $exif['Orientation'] : 0;
     1868                    if ( $orientation && apply_filters( 'eazyest_gallery_rotate_original', true ) ) {
     1869                        $image = wp_get_image_editor( eazyest_gallery()->root() . $file );
     1870                        $image->save( eazyest_gallery()->root() . $file );
     1871                    }
     1872                }
     1873            }
     1874        }
     1875       
     1876        if ( in_array( $orientation, array( 6, 8) ) ) {
     1877            $width = $metadata['width'];
     1878            $metadata['width']  = $metadata['height'];
     1879            $metadata['height'] = $width;
     1880        }
     1881   
    18641882    if ( isset( $metadata['sizes'] ) ) {
    18651883        foreach( $metadata['sizes'] as $key => $size ) {
    18661884            $metadata['sizes'][$key]['file'] = '_cache/' . basename( $metadata['sizes'][$key]['file'] );
     1885            if ( in_array( $orientation, array( 6, 8) ) ) {
     1886                    $width = $metadata['sizes'][$key]['width'];
     1887                    $metadata['sizes'][$key]['width']  = $metadata['sizes'][$key]['height'];
     1888                    $metadata['sizes'][$key]['height'] = $width;
     1889                }
    18671890        }
    18681891    }
     1892    $metadata['eazyest_exif'] = 1;
    18691893        return $metadata;           
    18701894    }
  • eazyest-gallery/trunk/includes/class-eazyest-image-editor.php

    r689307 r695131  
    1414 *
    1515 * @since 0.1.0 (r36)
    16  * @version 0.1.0 (r277)
     16 * @version 0.2.0 (r322)
    1717 * @package Eazyest Gallery
    1818 * @subpackage Image Editor
     
    2020 */
    2121class Eazyest_Image_Editor extends _Eazyest_Image_Editor {
     22   
     23       
     24    /**
     25     * Eazyest_Image_Editor::load()
     26     * Apply exif orientation after image loaded in memory.
     27     *
     28     * @since 0.2.0 (r322)
     29     * @access public
     30     * @return bool
     31     */
     32    public function load() {
     33        if ( $this->image )
     34         return true;   
     35        if( $load = parent::load() ) {
     36            if ( ( false === strpos( $this->file, eazyest_gallery()->address() ) ) && ( false === strpos( $this->file, eazyest_gallery()->root() ) ) )
     37                return true;
     38            $this->exif_orientation();
     39            return true;     
     40        }
     41        return $load;
     42    }
    2243
    2344    /**
     
    4869           
    4970        return trailingslashit( $dest_path ) . $name;   
     71    }
     72   
     73    /**
     74     * Eazyest_Image_Editor::exif_orientation()
     75     * Re-orient resized images based on exif orientation in source file.
     76     *
     77     * @since 0.2.0 (r322)
     78     * @access protected
     79     * @return void
     80     */
     81    protected function exif_orientation() {
     82        if ( apply_filters( 'eazyest_gallery_skip_exif_orientation', false ) )
     83            return;
     84       
     85        if ( ! function_exists( 'exif_read_data' ) )
     86            return;
     87           
     88        if ( $exif = exif_read_data( $this->file ) ) {
     89            $orientation = isset ( $exif['Orientation'] ) ? $exif['Orientation'] : false;
     90            if ( $orientation ) {
     91                switch( $orientation ) {
     92                    case 3: // 180 rotate left             
     93                        $this->rotate( 180 );               
     94                        break;             
     95                    case 6: // 90 rotate right             
     96                        $this->rotate( -90 );               
     97                        break;             
     98                    case 8: // 90 rotate left               
     99                        $this->rotate( 90 );               
     100                        break;             
     101                }   
     102            }
     103        }   
    50104    }
    51105   
     
    83137                               
    84138            $filename = $dirname . '/' . basename( $filename );
    85         }              
     139        }           
    86140        return parent::save( $filename, $mime_type );       
    87141    }
Note: See TracChangeset for help on using the changeset viewer.