Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F581454
TiffHandler.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
TiffHandler.php
View Options
<?php
/**
* Handler for Tiff images.
*
* @license GPL-2.0-or-later
* @file
* @ingroup Media
*/
use
MediaWiki\FileRepo\File\File
;
use
MediaWiki\FileRepo\ForeignAPIRepo
;
use
MediaWiki\MainConfigNames
;
use
MediaWiki\MediaWikiServices
;
/**
* Handler for Tiff images.
*
* @ingroup Media
*/
class
TiffHandler
extends
ExifBitmapHandler
{
/**
* TIFF files over 10M are considered expensive to thumbnail
*/
private
const
EXPENSIVE_SIZE_LIMIT
=
10
_485_760
;
/**
* Conversion to PNG for inline display can be disabled here...
* Note scaling should work with ImageMagick, but may not with GD scaling.
*
* Files pulled from an another MediaWiki instance via ForeignAPIRepo /
* InstantCommons will have thumbnails managed from the remote instance,
* so we can skip this check.
*
* @param File $file
* @return bool
*/
public
function
canRender
(
$file
)
{
$tiffThumbnailType
=
MediaWikiServices
::
getInstance
()->
getMainConfig
()
->
get
(
MainConfigNames
::
TiffThumbnailType
);
return
(
bool
)
$tiffThumbnailType
||
$file
->
getRepo
()
instanceof
ForeignAPIRepo
;
}
/**
* Browsers don't support TIFF inline generally...
* For inline display, we need to convert to PNG.
*
* @param File $file
* @return bool
*/
public
function
mustRender
(
$file
)
{
return
true
;
}
/**
* @param string $ext
* @param string $mime
* @param array|null $params
* @return array
*/
public
function
getThumbType
(
$ext
,
$mime
,
$params
=
null
)
{
$tiffThumbnailType
=
MediaWikiServices
::
getInstance
()->
getMainConfig
()
->
get
(
MainConfigNames
::
TiffThumbnailType
);
return
$tiffThumbnailType
;
}
/** @inheritDoc */
public
function
getSizeAndMetadata
(
$state
,
$filename
)
{
$showEXIF
=
MediaWikiServices
::
getInstance
()->
getMainConfig
()->
get
(
MainConfigNames
::
ShowEXIF
);
try
{
$meta
=
BitmapMetadataHandler
::
Tiff
(
$filename
);
if
(
!
is_array
(
$meta
)
)
{
// This should never happen, but doesn't hurt to be paranoid.
throw
new
InvalidTiffException
(
'Metadata array is not an array'
);
}
$info
=
[
'width'
=>
$meta
[
'ImageWidth'
]
??
0
,
'height'
=>
$meta
[
'ImageLength'
]
??
0
,
];
$info
=
$this
->
applyExifRotation
(
$info
,
$meta
);
if
(
$showEXIF
)
{
$meta
[
'MEDIAWIKI_EXIF_VERSION'
]
=
Exif
::
version
();
$info
[
'metadata'
]
=
$meta
;
}
return
$info
;
}
catch
(
InvalidTiffException
$e
)
{
// BitmapMetadataHandler throws an exception in certain exceptional
// cases like if file does not exist.
wfDebug
(
__METHOD__
.
': '
.
$e
->
getMessage
()
);
return
[
'metadata'
=>
[
'_error'
=>
ExifBitmapHandler
::
BROKEN_FILE
]
];
}
}
/** @inheritDoc */
public
function
isExpensiveToThumbnail
(
$file
)
{
return
$file
->
getSize
()
>
static
::
EXPENSIVE_SIZE_LIMIT
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Mon, Mar 30, 19:31 (19 h, 51 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
38/69/4eb3464573a0f7ef881267243390
Default Alt Text
TiffHandler.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment