MediaWiki  master
TransformationalImageHandler Class Reference

Handler for images that need to be transformed. More...

Inheritance diagram for TransformationalImageHandler:
Collaboration diagram for TransformationalImageHandler:

Public Member Functions

 autoRotateEnabled ()
 Should we automatically rotate an image based on exif. More...
 
 canRotate ()
 Returns whether the current scaler supports rotation. More...
 
 doTransform ( $image, $dstPath, $dstUrl, $params, $flags=0)
 Create a thumbnail. More...
 
 extractPreRotationDimensions ( $params, $rotation)
 Extracts the width/height if the image will be scaled before rotating. More...
 
 getMediaTransformError ( $params, $errMsg)
 Get a MediaTransformError with error 'thumbnail_error'. More...
 
 isImageAreaOkForThumbnaling ( $file, &$params)
 Check if the file is smaller than the maximum image area for thumbnailing. More...
 
 mustRender ( $file)
 Returns whether the file needs to be rendered. More...
 
 normaliseParams ( $image, &$params)
 Stable for overriding. More...
 
 rotate ( $file, $params)
 Rotate a thumbnail. More...
 
- Public Member Functions inherited from ImageHandler
 canRender ( $file)
 True if the handled types can be transformed.Stable for overriding
Parameters
File$file
Returns
bool
Stable for overriding More...
 
 getDimensionsString ( $file)
 Shown in file history box on image description page.Stable for overriding
Parameters
File$file
Returns
string Dimensions
Stable for overriding More...
 
 getImageArea ( $image)
 Function that returns the number of pixels to be thumbnailed. More...
 
 getImageSize ( $image, $path)
 Get an image size array like that returned by getimagesize(), or false if it can't be determined.This function is used for determining the width, height and bitdepth directly from an image. The results are stored in the database in the img_width, img_height, img_bits fields.
Note
If this is a multipage file, return the width and height of the first page.
Parameters
File | FSFile$imageThe image object, or false if there isn't one. Warning, FSFile::getPropsFromPath might pass an FSFile instead of File (!)
string$pathThe filename
Returns
array|false Follow the format of PHP getimagesize() internal function. See https://www.php.net/getimagesize. MediaWiki will only ever use the first two array keys (the width and height), and the 'bits' associative key. All other array keys are ignored. Returning a 'bits' key is optional as not all formats have a notion of "bitdepth". Returns false on failure.
Stable for overriding More...
 
 getLongDesc ( $file)
 Long description.Shown under image on image description page surounded by ().Stable for overriding
Parameters
File$file
Returns
string
Stable for overriding More...
 
 getParamMap ()
 Get an associative array mapping magic word IDs to parameter names.Will be used by the parser to identify parameters. Stable for overriding More...
 
 getScriptedTransform ( $image, $script, $params)
 Get a MediaTransformOutput object representing an alternate of the transformed output which will call an intermediary thumbnail assist script.Used when the repository has a thumbnailScriptUrl option configured.Return false to fall back to the regular getTransform().Stable for overriding
Parameters
File$image
string$script
array$params
Returns
bool|ThumbnailImage
Stable for overriding More...
 
 getShortDesc ( $file)
 Short description.Shown on Special:Search results.Stable for overriding
Parameters
File$file
Returns
string
Stable for overriding More...
 
 makeParamString ( $params)
 Merge a parameter array into a string appropriate for inclusion in filenames.
Parameters
array$paramsArray of parameters that have been through normaliseParams.
Returns
string
Stable for overriding More...
 
 parseParamString ( $str)
 Parse a param string made with makeParamString back into an array.
Parameters
string$strThe parameter string without file name (e.g. 122px)
Returns
array|bool Array of parameters or false on failure.
Stable for overriding More...
 
 sanitizeParamsForBucketing ( $params)
 Returns a normalised params array for which parameters have been cleaned up for bucketing purposes Stable for overriding.
Parameters
array$params
Returns
array
Stable for overriding More...
 
 validateParam ( $name, $value)
 Validate a thumbnail parameter at parse time.Return true to accept the parameter, and false to reject it. If you return false, the parser will do something quiet and forgiving.
Parameters
string$name
mixed$value
Stable for overriding More...
 
- Public Member Functions inherited from MediaHandler
 canAnimateThumbnail ( $file)
 If the material is animated, we can animate the thumbnail. More...
 
 convertMetadataVersion ( $metadata, $version=1)
 Convert metadata version. More...
 
 filterThumbnailPurgeList (&$files, $options)
 Remove files from the purge list. More...
 
 formatMetadata ( $image, $context=false)
 Get an array structure that looks like this: More...
 
 getAvailableLanguages (File $file)
 Get list of languages file can be viewed in. More...
 
 getCommonMetaArray (File $file)
 Get an array of standard (FormatMetadata type) metadata values. More...
 
 getContentHeaders ( $metadata)
 Get useful response headers for GET/HEAD requests for a file with the given metadata Stable for overriding. More...
 
 getDefaultRenderLanguage (File $file)
 On file types that support renderings in multiple languages, which language is used by default if unspecified. More...
 
 getEntireText (File $file)
 Get the text of the entire document. More...
 
 getLength ( $file)
 If its an audio file, return the length of the file. More...
 
 getMatchedLanguage ( $userPreferredLanguage, array $availableLanguages)
 When overridden in a descendant class, returns a language code most suiting. More...
 
 getMetadata ( $image, $path)
 Get handler-specific metadata which will be saved in the img_metadata field. More...
 
 getMetadataType ( $image)
 Get a string describing the type of metadata, for display purposes. More...
 
 getPageDimensions (File $image, $page)
 Get an associative array of page dimensions Currently "width" and "height" are understood, but this might be expanded in the future. More...
 
 getPageText (File $image, $page)
 Generic getter for text layer. More...
 
 getRotation ( $file)
 On supporting image formats, try to read out the low-level orientation of the file and return the angle that the file needs to be rotated to be viewed. More...
 
 getThumbType ( $ext, $mime, $params=null)
 Get the thumbnail extension and MIME type for a given source MIME type. More...
 
 getTransform ( $image, $dstPath, $dstUrl, $params)
 Get a MediaTransformOutput object representing the transformed output. More...
 
 getWarningConfig ( $file)
 Gets configuration for the file warning message. More...
 
 isAnimatedImage ( $file)
 The material is an image, and is animated. More...
 
 isEnabled ()
 False if the handler is disabled for all files Stable for overriding. More...
 
 isExpensiveToThumbnail ( $file)
 True if creating thumbnails from the file is large or otherwise resource-intensive. More...
 
 isMetadataValid ( $image, $metadata)
 Check if the metadata string is valid for this handler. More...
 
 isMultiPage ( $file)
 True if the type has multi-page capabilities. More...
 
 isVectorized ( $file)
 The material is vectorized and thus scaling is lossless. More...
 
 pageCount (File $file)
 Page count for a multi-page document, false if unsupported or unknown. More...
 
 parserTransformHook ( $parser, $file)
 Modify the parser object post-transform. More...
 
 removeBadFile ( $dstPath, $retval=0)
 Check for zero-sized thumbnails. More...
 
 supportsBucketing ()
 Returns whether or not this handler supports the chained generation of thumbnails according to buckets Stable for overriding. More...
 
 verifyUpload ( $fileName)
 File validation hook called on upload. More...
 

Protected Member Functions

 escapeMagickInput ( $path, $scene=false)
 Escape a string for ImageMagick's input filenames. More...
 
 escapeMagickOutput ( $path, $scene=false)
 Escape a string for ImageMagick's output filename. More...
 
 escapeMagickPath ( $path, $scene=false)
 Armour a string against ImageMagick's GetPathComponent(). More...
 
 escapeMagickProperty ( $s)
 Escape a string for ImageMagick's property input (e.g. More...
 
 getClientScalingThumbnailImage ( $image, $scalerParams)
 Get a ThumbnailImage that respresents an image that will be scaled client side. More...
 
 getMagickVersion ()
 Retrieve the version of the installed ImageMagick You can use PHPs version_compare() to use this value Value is cached for one hour. More...
 
 getScalerType ( $dstPath, $checkDstPath=true)
 Returns what sort of scaler type should be used. More...
 
 getThumbnailSource ( $file, $params)
 Get the source file for the transform. More...
 
 transformCustom ( $image, $params)
 Transform an image using a custom command. More...
 
 transformGd ( $image, $params)
 Transform an image using the built in GD library. More...
 
 transformImageMagick ( $image, $params)
 Transform an image using ImageMagick. More...
 
 transformImageMagickExt ( $image, $params)
 Transform an image using the Imagick PHP extension. More...
 
- Protected Member Functions inherited from ImageHandler
 getScriptParams ( $params)
 Stable for overriding More...
 
- Protected Member Functions inherited from MediaHandler
 formatMetadataHelper ( $metadataArray, $context=false)
 sorts the visible/invisible field. More...
 
 logErrorForExternalProcess ( $retval, $err, $cmd)
 Log an error that occurred in an external process. More...
 
 visibleMetadataFields ()
 Get a list of metadata items which should be displayed when the metadata table is collapsed. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from MediaHandler
static fitBoxWidth ( $boxWidth, $boxHeight, $maxHeight)
 Calculate the largest thumbnail width for a given original file size such that the thumbnail's height is at most $maxHeight. More...
 
static getGeneralLongDesc ( $file)
 Used instead of getLongDesc if there is no handler registered for file. More...
 
static getGeneralShortDesc ( $file)
 Used instead of getShortDesc if there is no handler registered for file. More...
 
static getHandler ( $type)
 Get a MediaHandler for a given MIME type from the instance cache. More...
 
static getMetadataVersion ()
 Get metadata version. More...
 
static getPageRangesByDimensions ( $pagesByDimensions)
 Converts a dimensions array about a potentially multipage document from an exhaustive list of ordered page numbers to a list of page ranges. More...
 
- Public Attributes inherited from MediaHandler
const METADATA_BAD = false
 
const METADATA_COMPATIBLE = 2
 
const METADATA_GOOD = true
 
const TRANSFORM_LATER = 1
 
- Static Protected Member Functions inherited from MediaHandler
static addMeta (&$array, $visibility, $type, $id, $value, $param=false)
 This is used to generate an array element for each metadata value That array is then used to generate the table of metadata values on the image page. More...
 

Detailed Description

Handler for images that need to be transformed.

Stable for subclassing

Since
1.24

Definition at line 39 of file TransformationalImageHandler.php.

Member Function Documentation

◆ autoRotateEnabled()

TransformationalImageHandler::autoRotateEnabled ( )

Should we automatically rotate an image based on exif.

Since
1.24 No longer static Stable for overriding
See also
$wgEnableAutoRotation
Returns
bool Whether auto rotation is enabled

Reimplemented in BitmapHandler.

Definition at line 565 of file TransformationalImageHandler.php.

◆ canRotate()

TransformationalImageHandler::canRotate ( )

Returns whether the current scaler supports rotation.

Since
1.24 No longer static Stable for overriding
Returns
bool

Reimplemented from MediaHandler.

Reimplemented in BitmapHandler.

Definition at line 553 of file TransformationalImageHandler.php.

Referenced by mustRender().

◆ doTransform()

TransformationalImageHandler::doTransform (   $image,
  $dstPath,
  $dstUrl,
  $params,
  $flags = 0 
)

Create a thumbnail.

This sets up various parameters, and then calls a helper method based on $this->getScalerType in order to scale the image. @stable for overriding

Parameters
File$image
string$dstPath
string$dstUrl
array$params
int$flags
Returns
MediaTransformError|ThumbnailImage|TransformParameterError

Reimplemented from MediaHandler.

Reimplemented in BitmapHandler_ClientOnly.

Definition at line 111 of file TransformationalImageHandler.php.

References $wgMaxImageArea, getClientScalingThumbnailImage(), getScalerType(), getThumbnailSource(), normaliseParams(), MediaHandler\removeBadFile(), Hooks\runner(), transformCustom(), transformGd(), transformImageMagick(), transformImageMagickExt(), wfDebug(), wfDebugLog(), wfHostname(), wfMessage(), and wfMkdirParents().

◆ escapeMagickInput()

TransformationalImageHandler::escapeMagickInput (   $path,
  $scene = false 
)
protected

Escape a string for ImageMagick's input filenames.

See ExpandFilenames() and GetPathComponent() in magick/utility.c.

This won't work with an initial ~ or @, so input files should be prefixed with the directory name.

Glob character unescaping is broken in ImageMagick before 6.6.1-5, but it's broken in a way that doesn't involve trying to convert every file in a directory, so we're better off escaping and waiting for the bugfix to filter down to users.

Parameters
string$pathThe file path
bool | string$sceneThe scene specification, or false if there is none
Exceptions
MWException
Returns
string

Definition at line 454 of file TransformationalImageHandler.php.

References $path, and escapeMagickPath().

Referenced by BitmapHandler\rotate(), and BitmapHandler\transformImageMagick().

◆ escapeMagickOutput()

TransformationalImageHandler::escapeMagickOutput (   $path,
  $scene = false 
)
protected

Escape a string for ImageMagick's output filename.

See InterpretImageFilename() in magick/image.c.

Parameters
string$pathThe file path
bool | string$sceneThe scene specification, or false if there is none
Returns
string

Definition at line 474 of file TransformationalImageHandler.php.

References $path, and escapeMagickPath().

Referenced by BitmapHandler\rotate(), and BitmapHandler\transformImageMagick().

◆ escapeMagickPath()

TransformationalImageHandler::escapeMagickPath (   $path,
  $scene = false 
)
protected

Armour a string against ImageMagick's GetPathComponent().

This is a helper function for escapeMagickInput() and escapeMagickOutput().

Parameters
string$pathThe file path
bool | string$sceneThe scene specification, or false if there is none
Exceptions
MWException
Returns
string

Definition at line 489 of file TransformationalImageHandler.php.

References $path, and wfIsWindows().

Referenced by escapeMagickInput(), and escapeMagickOutput().

◆ escapeMagickProperty()

TransformationalImageHandler::escapeMagickProperty (   $s)
protected

Escape a string for ImageMagick's property input (e.g.

-set -comment) See InterpretImageProperties() in magick/property.c

Parameters
string$s
Returns
string

Definition at line 424 of file TransformationalImageHandler.php.

References $s.

Referenced by BitmapHandler\transformImageMagick().

◆ extractPreRotationDimensions()

TransformationalImageHandler::extractPreRotationDimensions (   $params,
  $rotation 
)

Extracts the width/height if the image will be scaled before rotating.

This will match the physical size/aspect ratio of the original image prior to application of the rotation – so for a portrait image that's stored as raw landscape with 90-degress rotation, the resulting size will be wider than it is tall.

Parameters
array$paramsParameters as returned by normaliseParams
int$rotationThe rotation angle that will be applied
Returns
array ($width, $height) array

Definition at line 84 of file TransformationalImageHandler.php.

Referenced by BitmapHandler\transformGd(), BitmapHandler\transformImageMagick(), and BitmapHandler\transformImageMagickExt().

◆ getClientScalingThumbnailImage()

TransformationalImageHandler::getClientScalingThumbnailImage (   $image,
  $scalerParams 
)
protected

Get a ThumbnailImage that respresents an image that will be scaled client side.

@stable for overriding

Parameters
File$imageFile associated with this thumbnail
array$scalerParamsArray with scaler params
Returns
ThumbnailImage
Todo:
FIXME: No rotation support

Definition at line 338 of file TransformationalImageHandler.php.

Referenced by doTransform().

◆ getMagickVersion()

TransformationalImageHandler::getMagickVersion ( )
protected

Retrieve the version of the installed ImageMagick You can use PHPs version_compare() to use this value Value is cached for one hour.

Returns
string|bool Representing the IM version; false on error

Definition at line 520 of file TransformationalImageHandler.php.

References $cache, $matches, $wgImageMagickConvertCommand, wfDebug(), and wfShellExecWithStderr().

Referenced by BitmapHandler\transformImageMagick().

◆ getMediaTransformError()

TransformationalImageHandler::getMediaTransformError (   $params,
  $errMsg 
)

Get a MediaTransformError with error 'thumbnail_error'.

Parameters
array$paramsParameter array as passed to the transform* functions
string$errMsgError message
Returns
MediaTransformError

Definition at line 399 of file TransformationalImageHandler.php.

Referenced by transformCustom(), BitmapHandler\transformCustom(), transformGd(), BitmapHandler\transformGd(), BitmapHandler\transformImageMagick(), transformImageMagick(), BitmapHandler\transformImageMagickExt(), and transformImageMagickExt().

◆ getScalerType()

TransformationalImageHandler::getScalerType (   $dstPath,
  $checkDstPath = true 
)
abstractprotected

Returns what sort of scaler type should be used.

Values can be one of client, im, custom, gd, imext, or an array of object, method-name to call that specific method.

If specifying a custom scaler command with [ Obj, method ], the method in question should take 2 parameters, a File object, and a $scalerParams array with various options (See doTransform for what is in $scalerParams). On error it should return a MediaTransformError object. On success it should return false, and simply make sure the thumbnail file is located at $scalerParams['dstPath'].

If there is a problem with the output path, it returns "client" to do client side scaling.

Parameters
string$dstPath
bool$checkDstPathCheck that $dstPath is valid
Returns
string|Callable One of client, im, custom, gd, imext, or a Callable array.

Reimplemented in WebPHandler, XCFHandler, and BitmapHandler.

Referenced by doTransform().

◆ getThumbnailSource()

TransformationalImageHandler::getThumbnailSource (   $file,
  $params 
)
protected

Get the source file for the transform.

Parameters
File$file
array$params
Returns
array Array with keys width, height and path.

Definition at line 300 of file TransformationalImageHandler.php.

References $file.

Referenced by doTransform().

◆ isImageAreaOkForThumbnaling()

TransformationalImageHandler::isImageAreaOkForThumbnaling (   $file,
$params 
)

Check if the file is smaller than the maximum image area for thumbnailing.

Runs the 'BitmapHandlerCheckImageArea' hook.

Stable for overriding

Parameters
File$file
array&$params
Returns
bool
Since
1.25

Definition at line 609 of file TransformationalImageHandler.php.

References $file, $wgMaxImageArea, and Hooks\runner().

◆ mustRender()

TransformationalImageHandler::mustRender (   $file)

Returns whether the file needs to be rendered.

Returns true if the file requires rotation and we are able to rotate it.

Stable for overriding

Parameters
File$file
Returns
bool

Reimplemented from MediaHandler.

Reimplemented in WebPHandler, TiffHandler, XCFHandler, and BmpHandler.

Definition at line 594 of file TransformationalImageHandler.php.

References $file, canRotate(), and MediaHandler\getRotation().

◆ normaliseParams()

TransformationalImageHandler::normaliseParams (   $image,
$params 
)

Stable for overriding.

Parameters
File$image
array&$paramsTransform parameters. Entries with the keys 'width' and 'height' are the respective screen width and height, while the keys 'physicalWidth' and 'physicalHeight' indicate the thumbnail dimensions.
Returns
bool

Reimplemented from ImageHandler.

Reimplemented in BitmapHandler, BitmapHandler_ClientOnly, and JpegHandler.

Definition at line 48 of file TransformationalImageHandler.php.

Referenced by doTransform().

◆ rotate()

TransformationalImageHandler::rotate (   $file,
  $params 
)

Rotate a thumbnail.

This is a stub. See BitmapHandler::rotate.

Stable for overriding

Parameters
File$file
array$paramsRotate parameters. 'rotation' clockwise rotation in degrees, allowed are multiples of 90
Since
1.24 Is non-static. From 1.21 it was static
Returns
bool|MediaTransformError

Reimplemented in BitmapHandler, and JpegHandler.

Definition at line 581 of file TransformationalImageHandler.php.

◆ transformCustom()

TransformationalImageHandler::transformCustom (   $image,
  $params 
)
protected

Transform an image using a custom command.

This is a stub method. The real method is in BitmapHander.

@stable for overriding

Parameters
File$imageFile associated with this thumbnail
array$paramsArray with scaler params
Returns
MediaTransformError Error object if error occurred, false (=no error) otherwise

Reimplemented in BitmapHandler.

Definition at line 388 of file TransformationalImageHandler.php.

References getMediaTransformError().

Referenced by doTransform().

◆ transformGd()

TransformationalImageHandler::transformGd (   $image,
  $params 
)
protected

Transform an image using the built in GD library.

This is a stub method. The real method is in BitmapHander.

Parameters
File$imageFile associated with this thumbnail
array$paramsArray with scaler params
Returns
MediaTransformError Error object if error occurred, false (=no error) otherwise

Reimplemented in BitmapHandler.

Definition at line 414 of file TransformationalImageHandler.php.

References getMediaTransformError().

Referenced by doTransform().

◆ transformImageMagick()

TransformationalImageHandler::transformImageMagick (   $image,
  $params 
)
protected

Transform an image using ImageMagick.

This is a stub method. The real method is in BitmapHander.

@stable for overriding

Parameters
File$imageFile associated with this thumbnail
array$paramsArray with scaler params
Returns
MediaTransformError Error object if error occurred, false (=no error) otherwise

Reimplemented in JpegHandler, and BitmapHandler.

Definition at line 358 of file TransformationalImageHandler.php.

References getMediaTransformError().

Referenced by doTransform().

◆ transformImageMagickExt()

TransformationalImageHandler::transformImageMagickExt (   $image,
  $params 
)
protected

Transform an image using the Imagick PHP extension.

This is a stub method. The real method is in BitmapHander.

@stable for overriding

Parameters
File$imageFile associated with this thumbnail
array$paramsArray with scaler params
Returns
MediaTransformError Error object if error occurred, false (=no error) otherwise

Reimplemented in BitmapHandler.

Definition at line 373 of file TransformationalImageHandler.php.

References getMediaTransformError().

Referenced by doTransform().


The documentation for this class was generated from the following file: