15use Wikimedia\RequestTimeout\TimeoutException;
23 private const BROKEN_FILE =
'0';
33 }
catch ( TimeoutException $e ) {
35 }
catch ( Exception $e ) {
37 wfDebug( __METHOD__ .
': ' . $e->getMessage() );
39 return [
'metadata' => [
'_error' => self::BROKEN_FILE ] ];
43 'width' => $metadata[
'width'],
44 'height' => $metadata[
'height'],
45 'bits' => $metadata[
'bitDepth'],
46 'metadata' => array_diff_key(
48 [
'width' =>
true,
'height' =>
true,
'bits' =>
true ]
76 if ( !isset( $meta[
'metadata'] ) ) {
79 unset( $meta[
'metadata'][
'_MW_PNG_VERSION'] );
81 return $meta[
'metadata'];
89 $metadata = $image->getMetadataArray();
90 return isset( $metadata[
'frameCount'] ) && $metadata[
'frameCount'] > 1;
109 $data = $image->getMetadataArray();
110 if ( $data === [
'_error' => self::BROKEN_FILE ] ) {
115 if ( !$data || isset( $data[
'_error'] ) ) {
116 wfDebug( __METHOD__ .
" invalid png metadata" );
121 if ( !isset( $data[
'metadata'][
'_MW_PNG_VERSION'] )
124 wfDebug( __METHOD__ .
" old but compatible png metadata" );
138 $original = parent::getLongDesc( $image );
140 $metadata = $image->getMetadataArray();
142 if ( !$metadata || isset( $metadata[
'_error'] ) || $metadata[
'frameCount'] <= 0 ) {
149 if ( $metadata[
'loopCount'] == 0 ) {
150 $info[] =
wfMessage(
'file-info-png-looped' )->parse();
151 } elseif ( $metadata[
'loopCount'] > 1 ) {
152 $info[] =
wfMessage(
'file-info-png-repeat' )->numParams( $metadata[
'loopCount'] )->parse();
155 if ( $metadata[
'frameCount'] > 0 ) {
156 $info[] =
wfMessage(
'file-info-png-frames' )->numParams( $metadata[
'frameCount'] )->parse();
159 if ( $metadata[
'duration'] ) {
160 $info[] = htmlspecialchars(
$wgLang->formatTimePeriod( $metadata[
'duration'] ), ENT_QUOTES );
163 return $wgLang->commaList( $info );
175 $metadata = $file->getMetadataArray();
177 if ( !$metadata || !isset( $metadata[
'duration'] ) || !$metadata[
'duration'] ) {
181 return (
float)$metadata[
'duration'];
195class_alias( PNGHandler::class,
'PNGHandler' );
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
if(MW_ENTRY_POINT==='index') if(!defined( 'MW_NO_SESSION') &&MW_ENTRY_POINT !=='cli' $wgLang
Interface for objects which can provide a MediaWiki context on request.