44 $version = is_int( $version ) ? $version : intval( explode(
';', $version, 2 )[0] );
45 if ( $version < 1 || $version >= 2 ) {
49 if ( !isset( $metadata[
'MEDIAWIKI_EXIF_VERSION'] ) || $metadata[
'MEDIAWIKI_EXIF_VERSION'] != 2 ) {
55 if ( isset( $metadata[
'Software'] )
56 && is_array( $metadata[
'Software'] )
57 && is_array( $metadata[
'Software'][0] )
58 && isset( $metadata[
'Software'][0][0] )
59 && isset( $metadata[
'Software'][0][1] )
61 $metadata[
'Software'] = $metadata[
'Software'][0][0] .
' (Version '
62 . $metadata[
'Software'][0][1] .
')';
68 if ( isset( $metadata[
'Contact'] ) ) {
70 is_array( $metadata[
'Contact'] ) ? $metadata[
'Contact'] : [ $metadata[
'Contact'] ]
75 foreach ( [
'LocationShown',
'LocationCreated' ] as $metadataKey ) {
76 if ( isset( $metadata[ $metadataKey ] ) && !is_string( $metadata[ $metadataKey ] ) ) {
77 unset( $metadata[ $metadataKey ] );
81 foreach ( $metadata as &$val ) {
82 if ( is_array( $val ) ) {
84 $val = $formatter->flattenArrayReal( $val,
'ul',
true );
87 $metadata[
'MEDIAWIKI_EXIF_VERSION'] = 1;
97 $showEXIF = MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::ShowEXIF );
99 # Metadata disabled and so an empty field is expected
102 $exif = $image->getMetadataArray();
104 wfDebug( __METHOD__ .
': error unserializing?' );
107 if ( $exif === [
'_error' => self::OLD_BROKEN_FILE ] ) {
108 # Old special value indicating that there is no Exif data in the file.
109 # or that there was an error well extracting the metadata.
110 wfDebug( __METHOD__ .
": back-compat version" );
114 if ( $exif === [
'_error' => self::BROKEN_FILE ] ) {
118 if ( !isset( $exif[
'MEDIAWIKI_EXIF_VERSION'] )
121 if ( isset( $exif[
'MEDIAWIKI_EXIF_VERSION'] )
122 && $exif[
'MEDIAWIKI_EXIF_VERSION'] == 1
125 wfDebug( __METHOD__ .
": back-compat version" );
129 # Wrong (non-compatible) version
130 wfDebug( __METHOD__ .
": wrong version" );
153 $exif =
$file->getMetadataArray();
157 unset( $exif[
'MEDIAWIKI_EXIF_VERSION'] );
173 if ( $rotation == 90 || $rotation == 270 ) {
174 $width = $info[
'width'];
175 $info[
'width'] = $info[
'height'];
176 $info[
'height'] = $width;
198 $orientation =
$file->getMetadataItem(
'Orientation' );
211 if ( $orientation ===
null ) {
215 switch ( $orientation ) {
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
Generic handler for bitmap images.
Stuff specific to JPEG and (built-in) TIFF handler.
getRotationForExifFromOrientation( $orientation)
Given a chunk of serialized Exif metadata, return the orientation as degrees of rotation.
getMetadataType( $image)
Get a string describing the type of metadata, for display purposes.
getCommonMetaArray(File $file)
Get an array of standard (FormatMetadata type) metadata values.
applyExifRotation( $info, $metadata)
const OLD_BROKEN_FILE
Outdated error extracting metadata.
convertMetadataVersion( $metadata, $version=1)
Convert metadata version.
getRotation( $file)
On supporting image formats, try to read out the low-level orientation of the file and return the ang...
isFileMetadataValid( $image)
const BROKEN_FILE
Error extracting metadata.
formatMetadata( $image, $context=false)
Implements some public methods and some protected utility functions which are required by multiple ch...
A class containing constants representing the names of configuration variables.
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.