MediaWiki master
TiffHandler.php
Go to the documentation of this file.
1<?php
10namespace MediaWiki\Media;
11
16
26 private const EXPENSIVE_SIZE_LIMIT = 10_485_760;
27
39 public function canRender( $file ) {
40 $tiffThumbnailType = MediaWikiServices::getInstance()->getMainConfig()
42
43 return (bool)$tiffThumbnailType
44 || $file->getRepo() instanceof ForeignAPIRepo;
45 }
46
54 public function mustRender( $file ) {
55 return true;
56 }
57
64 public function getThumbType( $ext, $mime, $params = null ) {
65 $tiffThumbnailType = MediaWikiServices::getInstance()->getMainConfig()
67
68 return $tiffThumbnailType;
69 }
70
72 public function getSizeAndMetadata( $state, $filename ) {
73 $showEXIF = MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::ShowEXIF );
74
75 try {
76 $meta = BitmapMetadataHandler::Tiff( $filename );
77 if ( !is_array( $meta ) ) {
78 // This should never happen, but doesn't hurt to be paranoid.
79 throw new InvalidTiffException( 'Metadata array is not an array' );
80 }
81 $info = [
82 'width' => $meta['ImageWidth'] ?? 0,
83 'height' => $meta['ImageLength'] ?? 0,
84 ];
85 $info = $this->applyExifRotation( $info, $meta );
86 if ( $showEXIF ) {
87 $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
88 $info['metadata'] = $meta;
89 }
90 return $info;
91 } catch ( InvalidTiffException $e ) {
92 // BitmapMetadataHandler throws an exception in certain exceptional
93 // cases like if file does not exist.
94 wfDebug( __METHOD__ . ': ' . $e->getMessage() );
95
96 return [ 'metadata' => [ '_error' => ExifBitmapHandler::BROKEN_FILE ] ];
97 }
98 }
99
101 public function isExpensiveToThumbnail( $file ) {
102 return $file->getSize() > static::EXPENSIVE_SIZE_LIMIT;
103 }
104}
105
107class_alias( TiffHandler::class, 'TiffHandler' );
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
Implements some public methods and some protected utility functions which are required by multiple ch...
Definition File.php:79
A foreign repository for a remote MediaWiki accessible through api.php requests.
A class containing constants representing the names of configuration variables.
const ShowEXIF
Name constant for the ShowEXIF setting, for use with Config::get()
const TiffThumbnailType
Name constant for the TiffThumbnailType setting, for use with Config::get()
Service locator for MediaWiki core services.
static getInstance()
Returns the global default instance of the top level service locator.
static Tiff( $filename)
This doesn't do much yet, but eventually I plan to add XMP support for Tiff.
Stuff specific to JPEG and (built-in) TIFF handler.
const BROKEN_FILE
Error extracting metadata.
static version()
The version of the output format.
Definition Exif.php:695
Handler for Tiff images.
mustRender( $file)
Browsers don't support TIFF inline generally... For inline display, we need to convert to PNG.
getThumbType( $ext, $mime, $params=null)
canRender( $file)
Conversion to PNG for inline display can be disabled here... Note scaling should work with ImageMagic...
isExpensiveToThumbnail( $file)
True if creating thumbnails from the file is large or otherwise resource-intensive....
getSizeAndMetadata( $state, $filename)
Get image size information and metadata array.If this returns null, the caller will fall back to getI...