MediaWiki  1.23.15
BitmapHandler Class Reference

Generic handler for bitmap images. More...

Inheritance diagram for BitmapHandler:
Collaboration diagram for BitmapHandler:

Public Member Functions

 doTransform ( $image, $dstPath, $dstUrl, $params, $flags=0)
 
 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...
 
 escapeMagickProperty ( $s)
 Escape a string for ImageMagick's property input (e.g. 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...
 
 mustRender ( $file)
 Rerurns whether the file needs to be rendered. More...
 
 normaliseParams ( $image, &$params)
 
 rotate ( $file, $params)
 
- Public Member Functions inherited from ImageHandler
 canRender ( $file)
 
 getDimensionsString ( $file)
 
 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. More...
 
 getLongDesc ( $file)
 
 getParamMap ()
 Get an associative array mapping magic word IDs to parameter names. More...
 
 getScriptedTransform ( $image, $script, $params)
 
 getScriptParams ( $params)
 
 getShortDesc ( $file)
 
 makeParamString ( $params)
 Merge a parameter array into a string appropriate for inclusion in filenames. More...
 
 parseParamString ( $str)
 Parse a param string made with makeParamString back into an array. More...
 
 validateParam ( $name, $value)
 Validate a thumbnail parameter at parse time. More...
 
 validateThumbParams (&$width, &$height, $srcWidth, $srcHeight, $mimeType)
 Validate thumbnail parameters and fill in the correct height. 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)
 Get an array structure that looks like this: More...
 
 formatMetadataHelper ( $metadataArray)
 sorts the visible/invisible field. 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...
 
 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...
 
 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 ( $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 ( $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...
 
 getStreamHeaders ( $metadata)
 Get useful response headers for GET/HEAD requests for a file with the given metadata. 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...
 
 isAnimatedImage ( $file)
 The material is an image, and is animated. More...
 
 isEnabled ()
 False if the handler is disabled for all files. 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)
 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...
 
 verifyUpload ( $fileName)
 File validation hook called on upload. More...
 

Static Public Member Functions

static autoRotateEnabled ()
 
static canRotate ()
 Returns whether the current scaler supports rotation (im and gd do) More...
 
static imageJpegWrapper ( $dst_image, $thumbPath)
 
- 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 getShortDesc if there is no handler registered for file. More...
 
static getGeneralShortDesc ( $file)
 Long description. More...
 
static getHandler ( $type)
 Get a MediaHandler for a given MIME type from the instance cache. More...
 
static getMetadataVersion ()
 Get metadata version. More...
 

Protected Member Functions

 escapeMagickPath ( $path, $scene=false)
 Armour a string against ImageMagick's GetPathComponent(). 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...
 
 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 MediaHandler
 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...
 

Static Protected Member Functions

static getScalerType ( $dstPath, $checkDstPath=true)
 Returns which scaler type should be used. More...
 
- 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...
 

Additional Inherited Members

- Public Attributes inherited from MediaHandler
const MAX_ERR_LOG_SIZE = 65535
 Max length of error logged by logErrorForExternalProcess() More...
 
const METADATA_BAD = false
 
const METADATA_COMPATIBLE = 2
 
const METADATA_GOOD = true
 
const TRANSFORM_LATER = 1
 
- Static Protected Attributes inherited from MediaHandler
static $handlers = array()
 

Detailed Description

Generic handler for bitmap images.

Definition at line 29 of file Bitmap.php.

Member Function Documentation

◆ autoRotateEnabled()

static BitmapHandler::autoRotateEnabled ( )
static
See also
$wgEnableAutoRotation
Returns
bool Whether auto rotation is enabled

Definition at line 768 of file Bitmap.php.

References canRotate(), and global.

Referenced by ExifBitmapHandler\getImageSize(), and ExifBitmapHandler\getRotation().

◆ canRotate()

static BitmapHandler::canRotate ( )
static

Returns whether the current scaler supports rotation (im and gd do)

Returns
bool

Reimplemented from MediaHandler.

Definition at line 745 of file Bitmap.php.

References getScalerType().

Referenced by autoRotateEnabled(), ResourceLoaderStartUpModule\getConfig(), mustRender(), ExifRotationTest\testMetadata(), and ExifRotationTest\testRotationRendering().

◆ doTransform()

BitmapHandler::doTransform (   $image,
  $dstPath,
  $dstUrl,
  $params,
  $flags = 0 
)
Parameters
File$image
string$dstPath
string$dstUrl
array$params
int$flags
Returns
MediaTransformError|ThumbnailImage|TransformParameterError

Reimplemented from MediaHandler.

Reimplemented in BitmapHandler_ClientOnly, and MockBitmapHandler.

Definition at line 116 of file Bitmap.php.

References $flags, $params, array(), as, getClientScalingThumbnailImage(), getScalerType(), normaliseParams(), of, on, page, MediaHandler\removeBadFile(), text, transformCustom(), transformGd(), transformImageMagick(), transformImageMagickExt(), wfDebug(), wfDebugLog(), wfHostname(), wfMessage(), wfMkdirParents(), wfRunHooks(), and will.

◆ escapeMagickInput()

BitmapHandler::escapeMagickInput (   $path,
  $scene = false 
)

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 645 of file Bitmap.php.

References $path, and escapeMagickPath().

Referenced by rotate(), and transformImageMagick().

◆ escapeMagickOutput()

BitmapHandler::escapeMagickOutput (   $path,
  $scene = false 
)

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 665 of file Bitmap.php.

References $path, and escapeMagickPath().

Referenced by rotate(), and transformImageMagick().

◆ escapeMagickPath()

BitmapHandler::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 680 of file Bitmap.php.

References $path, and wfIsWindows().

Referenced by escapeMagickInput(), and escapeMagickOutput().

◆ escapeMagickProperty()

BitmapHandler::escapeMagickProperty (   $s)

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 615 of file Bitmap.php.

References $s.

Referenced by transformImageMagick().

◆ extractPreRotationDimensions()

BitmapHandler::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 95 of file Bitmap.php.

References $params, and array().

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

◆ getClientScalingThumbnailImage()

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

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

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

Definition at line 288 of file Bitmap.php.

References $params, and array().

Referenced by MockBitmapHandler\doClientImage(), and doTransform().

◆ getMagickVersion()

BitmapHandler::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 Representing the IM version.

Definition at line 711 of file Bitmap.php.

References $cache, $matches, $retval, $wgMemc, global, wfDebug(), wfEscapeShellArg(), and wfShellExec().

Referenced by transformImageMagick().

◆ getMediaTransformError()

BitmapHandler::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 516 of file Bitmap.php.

References $params.

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

◆ getScalerType()

static BitmapHandler::getScalerType (   $dstPath,
  $checkDstPath = true 
)
staticprotected

Returns which scaler type should be used.

Creates parent directories for $dstPath and returns 'client' on error

Parameters
string$dstPath
bool$checkDstPath
Returns
string One of client, im, custom, gd, imext

Reimplemented in XCFHandler.

Definition at line 255 of file Bitmap.php.

References global.

Referenced by canRotate(), doTransform(), normaliseParams(), and rotate().

◆ imageJpegWrapper()

static BitmapHandler::imageJpegWrapper (   $dst_image,
  $thumbPath 
)
static

Definition at line 735 of file Bitmap.php.

◆ mustRender()

BitmapHandler::mustRender (   $file)

Rerurns whether the file needs to be rendered.

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

Parameters
File$file
Returns
bool

Reimplemented from MediaHandler.

Reimplemented in TiffHandler, XCFHandler, and BmpHandler.

Definition at line 838 of file Bitmap.php.

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

◆ normaliseParams()

BitmapHandler::normaliseParams (   $image,
$params 
)
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_ClientOnly.

Definition at line 37 of file Bitmap.php.

References $params, array(), getScalerType(), global, and wfRunHooks().

Referenced by doTransform(), and BitmapScalingTest\testNormaliseParams().

◆ rotate()

BitmapHandler::rotate (   $file,
  $params 
)
Parameters
File$file
array$paramsRotate parameters. 'rotation' clockwise rotation in degrees, allowed are multiples of 90
Since
1.21
Returns
bool

Reimplemented in JpegHandler.

Definition at line 786 of file Bitmap.php.

References $file, $params, $retval, escapeMagickInput(), escapeMagickOutput(), MediaHandler\getRotation(), getScalerType(), global, MediaHandler\logErrorForExternalProcess(), wfDebug(), wfEscapeShellArg(), wfProfileIn(), wfProfileOut(), and wfShellExecWithStderr().

◆ transformCustom()

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

Transform an image using a custom command.

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

Definition at line 483 of file Bitmap.php.

References $params, $retval, getMediaTransformError(), global, MediaHandler\logErrorForExternalProcess(), wfDebug(), wfEscapeShellArg(), wfProfileIn(), wfProfileOut(), and wfShellExecWithStderr().

Referenced by doTransform().

◆ transformGd()

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

Transform an image using the built in GD library.

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

Definition at line 529 of file Bitmap.php.

References $params, array(), extractPreRotationDimensions(), getMediaTransformError(), MediaHandler\getRotation(), list, wfDebug(), and wfMessage().

Referenced by doTransform().

◆ transformImageMagick()

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

Transform an image using ImageMagick.

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

Definition at line 305 of file Bitmap.php.

References $params, $retval, array(), escapeMagickInput(), escapeMagickOutput(), escapeMagickProperty(), extractPreRotationDimensions(), ImageHandler\getImageArea(), getMagickVersion(), getMediaTransformError(), MediaHandler\getRotation(), global, MediaHandler\isAnimatedImage(), list, MediaHandler\logErrorForExternalProcess(), wfDebug(), wfProfileIn(), wfProfileOut(), and wfShellExecWithStderr().

Referenced by doTransform().

◆ transformImageMagickExt()

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

Transform an image using the Imagick PHP extension.

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

Definition at line 407 of file Bitmap.php.

References $e, $params, as, extractPreRotationDimensions(), ImageHandler\getImageArea(), getMediaTransformError(), MediaHandler\getRotation(), global, MediaHandler\isAnimatedImage(), list, and wfDebug().

Referenced by doTransform().


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