Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4112809
TiffHandler.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
TiffHandler.php
View Options
<?php
/**
* Handler for Tiff images.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @ingroup Media
*/
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
;
}
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
]
];
}
}
public
function
isExpensiveToThumbnail
(
$file
)
{
return
$file
->
getSize
()
>
static
::
EXPENSIVE_SIZE_LIMIT
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Aug 18, 23:02 (1 d, 5 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
50/7a/8c1b2e8ee55587f87651154ec5b9
Default Alt Text
TiffHandler.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment