self::$pngSig = pack( "C8", 137, 80, 78, 71, 13, 10, 26, 10 );
self::$crcSize = 4;
/* based on list at http://owl.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData
- * and http://www.w3.org/TR/PNG/#11keywords
+ * and https://www.w3.org/TR/PNG/#11keywords
*/
- self::$textChunks = array(
+ self::$textChunks = [
'xml:com.adobe.xmp' => 'xmp',
# Artist is unofficial. Author is the recommended
# keyword in the PNG spec. However some people output
'label' => 'Label',
'creation time' => 'DateTimeDigitized',
/* Other potentially useful things - Document */
- );
+ ];
$frameCount = 0;
$loopCount = 1;
- $text = array();
+ $text = [];
$duration = 0.0;
$bitDepth = 0;
$colorType = 'unknown';
if ( !$buf || strlen( $buf ) < 4 ) {
throw new Exception( __METHOD__ . ": Read error" );
}
- $chunk_size = unpack( "N", $buf );
- $chunk_size = $chunk_size[1];
+ $chunk_size = unpack( "N", $buf )[1];
if ( $chunk_size < 0 ) {
throw new Exception( __METHOD__ . ": Chunk size too big for unpack" );
if ( !$buf || strlen( $buf ) < $chunk_size ) {
throw new Exception( __METHOD__ . ": Read error" );
}
+ $width = unpack( 'N', substr( $buf, 0, 4 ) )[1];
+ $height = unpack( 'N', substr( $buf, 4, 4 ) )[1];
$bitDepth = ord( substr( $buf, 8, 1 ) );
// Detect the color type in British English as per the spec
- // http://www.w3.org/TR/PNG/#11IHDR
+ // https://www.w3.org/TR/PNG/#11IHDR
switch ( ord( substr( $buf, 9, 1 ) ) ) {
case 0:
$colorType = 'greyscale';
} elseif ( $chunk_type == "iTXt" ) {
// Extracts iTXt chunks, uncompressing if necessary.
$buf = self::read( $fh, $chunk_size );
- $items = array();
+ $items = [];
if ( preg_match(
'/^([^\x00]{1,79})\x00(\x00|\x01)\x00([^\x00]*)(.)[^\x00]*\x00(.*)$/Ds',
$buf, $items )
// if compressed
if ( $items[2] == "\x01" ) {
if ( function_exists( 'gzuncompress' ) && $items[4] === "\x00" ) {
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$items[5] = gzuncompress( $items[5] );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( $items[5] === false ) {
// decompression failed
fseek( $fh, self::$crcSize, SEEK_CUR );
continue;
}
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$content = iconv( 'ISO-8859-1', 'UTF-8', $content );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( $content === false ) {
throw new Exception( __METHOD__ . ": Read error (error with iconv)" );
continue;
}
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$content = gzuncompress( $content );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( $content === false ) {
// decompression failed
continue;
}
- wfSuppressWarnings();
+ MediaWiki\suppressWarnings();
$content = iconv( 'ISO-8859-1', 'UTF-8', $content );
- wfRestoreWarnings();
+ MediaWiki\restoreWarnings();
if ( $content === false ) {
throw new Exception( __METHOD__ . ": Read error (error with iconv)" );
}
}
- return array(
+ return [
'frameCount' => $frameCount,
'loopCount' => $loopCount,
'duration' => $duration,
'text' => $text,
'bitDepth' => $bitDepth,
'colorType' => $colorType,
- );
+ ];
}
/**