MediaWiki  master
TiffHandler.php
Go to the documentation of this file.
1 <?php
24 use Wikimedia\RequestTimeout\TimeoutException;
25 
35  private const EXPENSIVE_SIZE_LIMIT = 10485760;
36 
48  public function canRender( $file ) {
49  global $wgTiffThumbnailType;
50 
51  return (bool)$wgTiffThumbnailType
52  || $file->getRepo() instanceof ForeignAPIRepo;
53  }
54 
62  public function mustRender( $file ) {
63  return true;
64  }
65 
72  public function getThumbType( $ext, $mime, $params = null ) {
73  global $wgTiffThumbnailType;
74 
75  return $wgTiffThumbnailType;
76  }
77 
78  public function getSizeAndMetadata( $state, $filename ) {
79  global $wgShowEXIF;
80 
81  try {
82  $meta = BitmapMetadataHandler::Tiff( $filename );
83  if ( !is_array( $meta ) ) {
84  // This should never happen, but doesn't hurt to be paranoid.
85  throw new MWException( 'Metadata array is not an array' );
86  }
87  $info = [
88  'width' => $meta['ImageWidth'] ?? 0,
89  'height' => $meta['ImageLength'] ?? 0,
90  ];
91  $info = $this->applyExifRotation( $info, $meta );
92  if ( $wgShowEXIF ) {
93  $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
94  $info['metadata'] = $meta;
95  }
96  return $info;
97  } catch ( TimeoutException $e ) {
98  throw $e;
99  } catch ( Exception $e ) {
100  // BitmapMetadataHandler throws an exception in certain exceptional
101  // cases like if file does not exist.
102  wfDebug( __METHOD__ . ': ' . $e->getMessage() );
103 
104  return [ 'metadata' => [ '_error' => ExifBitmapHandler::BROKEN_FILE ] ];
105  }
106  }
107 
108  public function isExpensiveToThumbnail( $file ) {
109  return $file->getSize() > static::EXPENSIVE_SIZE_LIMIT;
110  }
111 }
BitmapMetadataHandler\Tiff
static Tiff( $filename)
This doesn't do much yet, but eventually I plan to add XMP support for Tiff.
Definition: BitmapMetadataHandler.php:279
ExifBitmapHandler
Stuff specific to JPEG and (built-in) TIFF handler.
Definition: ExifBitmapHandler.php:31
TiffHandler\getSizeAndMetadata
getSizeAndMetadata( $state, $filename)
Get image size information and metadata array.
Definition: TiffHandler.php:78
TiffHandler\canRender
canRender( $file)
Conversion to PNG for inline display can be disabled here...
Definition: TiffHandler.php:48
$file
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.
Definition: router.php:42
MWException
MediaWiki exception.
Definition: MWException.php:29
TiffHandler
Handler for Tiff images.
Definition: TiffHandler.php:31
TiffHandler\isExpensiveToThumbnail
isExpensiveToThumbnail( $file)
True if creating thumbnails from the file is large or otherwise resource-intensive.
Definition: TiffHandler.php:108
Exif\version
static version()
#-
Definition: Exif.php:592
wfDebug
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
Definition: GlobalFunctions.php:894
TiffHandler\EXPENSIVE_SIZE_LIMIT
const EXPENSIVE_SIZE_LIMIT
TIFF files over 10M are considered expensive to thumbnail.
Definition: TiffHandler.php:35
$wgTiffThumbnailType
$wgTiffThumbnailType
Browsers don't support TIFF inline generally...
Definition: DefaultSettings.php:1424
TiffHandler\mustRender
mustRender( $file)
Browsers don't support TIFF inline generally...
Definition: TiffHandler.php:62
ForeignAPIRepo
A foreign repository for a remote MediaWiki accessible through api.php requests.
Definition: ForeignAPIRepo.php:42
ExifBitmapHandler\applyExifRotation
applyExifRotation( $info, $metadata)
Definition: ExifBitmapHandler.php:155
$ext
if(!is_readable( $file)) $ext
Definition: router.php:48
ExifBitmapHandler\BROKEN_FILE
const BROKEN_FILE
Error extracting metadata.
Definition: ExifBitmapHandler.php:33
$mime
$mime
Definition: router.php:60
TiffHandler\getThumbType
getThumbType( $ext, $mime, $params=null)
Definition: TiffHandler.php:72
$wgShowEXIF
$wgShowEXIF
Show Exif data, on by default if available.
Definition: DefaultSettings.php:962