Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




wp_read_image_metadata [ WordPress Function ]

wp_read_image_metadata ( $file )
Parameters:
  • (string) $file
Returns:
  • (bool|array) False on failure. Image metadata array on success.
Defined at:



Get extended image metadata, exif or iptc as available.

Retrieves the EXIF metadata aperture, credit, camera, caption, copyright, iso created_timestamp, focal_length, shutter_speed, and title.

The IPTC metadata that is retrieved is APP13, credit, byline, created date and time, caption, copyright, and title. Also includes FNumber, Model, DateTimeDigitized, FocalLength, ISOSpeedRatings, and ExposureTime.

Source


<?php
function wp_read_image_metadata$file ) {
    if ( ! 
file_exists$file ) )
        return 
false;

    list( , , 
$sourceImageType ) = getimagesize$file );

    
// exif contains a bunch of data we'll probably never need formatted in ways
    // that are difficult to use. We'll normalize it and just extract the fields
    // that are likely to be useful. Fractions and numbers are converted to
    // floats, dates to unix timestamps, and everything else to strings.
    
$meta = array(
        
'aperture' => 0,
        
'credit' => '',
        
'camera' => '',
        
'caption' => '',
        
'created_timestamp' => 0,
        
'copyright' => '',
        
'focal_length' => 0,
        
'iso' => 0,
        
'shutter_speed' => 0,
        
'title' => '',
    );

    
// read iptc first, since it might contain data not available in exif such
    // as caption, description etc
    
if ( is_callable'iptcparse' ) ) {
        
getimagesize$file$info );

        if ( ! empty( 
$info['APP13'] ) ) {
            
$iptc iptcparse$info['APP13'] );

            
// headline, "A brief synopsis of the caption."
            
if ( ! empty( $iptc['2#105'][0] ) )
                
$meta['title'] = utf8_encodetrim$iptc['2#105'][0] ) );
            
// title, "Many use the Title field to store the filename of the image, though the field may be used in many ways."
            
elseif ( ! empty( $iptc['2#005'][0] ) )
                
$meta['title'] = utf8_encodetrim$iptc['2#005'][0] ) );

            if ( ! empty( 
$iptc['2#120'][0] ) ) { // description / legacy caption
                
$caption utf8_encodetrim$iptc['2#120'][0] ) );
                if ( empty( 
$meta['title'] ) ) {
                    
// Assume the title is stored in 2:120 if it's short.
                    
if ( strlen$caption ) < 80 )
                        
$meta['title'] = $caption;
                    else
                        
$meta['caption'] = $caption;
                } elseif ( 
$caption != $meta['title'] ) {
                    
$meta['caption'] = $caption;
                }
            }

            if ( ! empty( 
$iptc['2#110'][0] ) ) // credit
                
$meta['credit'] = utf8_encode(trim($iptc['2#110'][0]));
            elseif ( ! empty( 
$iptc['2#080'][0] ) ) // creator / legacy byline
                
$meta['credit'] = utf8_encode(trim($iptc['2#080'][0]));

            if ( ! empty( 
$iptc['2#055'][0] ) and ! empty( $iptc['2#060'][0] ) ) // created date and time
                
$meta['created_timestamp'] = strtotime$iptc['2#055'][0] . ' ' $iptc['2#060'][0] );

            if ( ! empty( 
$iptc['2#116'][0] ) ) // copyright
                
$meta['copyright'] = utf8_encodetrim$iptc['2#116'][0] ) );
         }
    }

    
// fetch additional info from exif if available
    
if ( is_callable'exif_read_data' ) && in_array$sourceImageTypeapply_filters'wp_read_image_metadata_types', array( IMAGETYPE_JPEGIMAGETYPE_TIFF_IIIMAGETYPE_TIFF_MM ) ) ) ) {
        
$exif = @exif_read_data$file );

        if ( !empty( 
$exif['Title'] ) )
            
$meta['title'] = utf8_encodetrim$exif['Title'] ) );

        if ( ! empty( 
$exif['ImageDescription'] ) ) {
            if ( empty( 
$meta['title'] ) && strlen$exif['ImageDescription'] ) < 80 ) {
                
// Assume the title is stored in ImageDescription
                
$meta['title'] = utf8_encodetrim$exif['ImageDescription'] ) );
                if ( ! empty( 
$exif['COMPUTED']['UserComment'] ) && trim$exif['COMPUTED']['UserComment'] ) != $meta['title'] )
                    
$meta['caption'] = utf8_encodetrim$exif['COMPUTED']['UserComment'] ) );
            } elseif ( 
trim$exif['ImageDescription'] ) != $meta['title'] ) {
                
$meta['caption'] = utf8_encodetrim$exif['ImageDescription'] ) );
            }
        } elseif ( ! empty( 
$exif['Comments'] ) && trim$exif['Comments'] ) != $meta['title'] ) {
            
$meta['caption'] = utf8_encodetrim$exif['Comments'] ) );
        }

        if ( ! empty( 
$exif['Artist'] ) )
            
$meta['credit'] = utf8_encodetrim$exif['Artist'] ) );
        elseif ( ! empty(
$exif['Author'] ) )
            
$meta['credit'] = utf8_encodetrim$exif['Author'] ) );

        if ( ! empty( 
$exif['Copyright'] ) )
            
$meta['copyright'] = utf8_encodetrim$exif['Copyright'] ) );
        if ( ! empty(
$exif['FNumber'] ) )
            
$meta['aperture'] = roundwp_exif_frac2dec$exif['FNumber'] ), );
        if ( ! empty(
$exif['Model'] ) )
            
$meta['camera'] = utf8_encodetrim$exif['Model'] ) );
        if ( ! empty(
$exif['DateTimeDigitized'] ) )
            
$meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized'] );
        if ( ! empty(
$exif['FocalLength'] ) )
            
$meta['focal_length'] = wp_exif_frac2dec$exif['FocalLength'] );
        if ( ! empty(
$exif['ISOSpeedRatings'] ) )
            
$meta['iso'] = utf8_encodetrim$exif['ISOSpeedRatings'] ) );
        if ( ! empty(
$exif['ExposureTime'] ) )
            
$meta['shutter_speed'] = wp_exif_frac2dec$exif['ExposureTime'] );
    }

    return 
apply_filters'wp_read_image_metadata'$meta$file$sourceImageType );

}
?>

Examples [ wp-snippets.com ]

Google Arama Sonuçlarý

Dahasý ...

0 User Note(s)

Henüz yok. Ýlk sen ol!

Yeni Ekle ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics