MediaWiki  master
WebPHandler Class Reference

Handler for Google's WebP format https://developers.google.com/speed/webp/ More...

Inheritance diagram for WebPHandler:
Collaboration diagram for WebPHandler:

Public Member Functions

 canAnimateThumbnail ( $file)
 If the material is animated, we can animate the thumbnail. More...
 
 canRender ( $file)
 
 getMetadataType ( $image)
 Get a string describing the type of metadata, for display purposes. More...
 
 getSizeAndMetadata ( $state, $filename)
 Get image size information and metadata array. More...
 
 getThumbType ( $ext, $mime, $params=null)
 Render files as PNG. More...
 
 isAnimatedImage ( $image)
 
 isFileMetadataValid ( $image)
 Check if the metadata is valid for this handler. More...
 
 mustRender ( $file)
 
- Public Member Functions inherited from BitmapHandler
 autoRotateEnabled ()
 
 canRotate ()
 Returns whether the current scaler supports rotation (im and gd do) 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
Stability: stable
to override
More...
 
 normaliseParams ( $image, &$params)
 
 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.
Stability: stable
to override
More...
 
 rotate ( $file, $params)
 
 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
Stability: stable
to override
More...
 
- Public Member Functions inherited from TransformationalImageHandler
 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...
 
- Public Member Functions inherited from ImageHandler
 getDimensionsString ( $file)
 Shown in file history box on image description page.
Stability: stable
to override
Parameters
File$file
Returns
string Dimensions
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. More...
 
 getLongDesc ( $file)
 Long description.Shown under image on image description page surounded by ().
Stability: stable
to override
Parameters
File$file
Returns
string
More...
 
 getParamMap ()
 Get an associative array mapping magic word IDs to parameter names.Will be used by the parser to identify parameters. 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().
Stability: stable
to override
Parameters
File$image
string$script
array$params
Returns
ThumbnailImage|false
More...
 
 getShortDesc ( $file)
 Short description.Shown on Special:Search results.
Stability: stable
to override
Parameters
File$file
Returns
string
More...
 
 sanitizeParamsForBucketing ( $params)
 Returns a normalised params array for which parameters have been cleaned up for bucketing purposes.
Stability: stable
to override
Parameters
array$params
Returns
array
More...
 
- Public Member Functions inherited from MediaHandler
 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. 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...
 
 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...
 
 getSizeAndMetadataWithFallback ( $file, $path)
 Get the metadata array and the image size, with b/c fallback. 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...
 
 isEnabled ()
 False if the handler is disabled for all files. 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. More...
 
 useSplitMetadata ()
 If this returns true, LocalFile may split metadata up and store its constituent items separately. More...
 
 verifyUpload ( $fileName)
 File validation hook called on upload. More...
 

Static Public Member Functions

static decodeExtendedChunkHeader ( $header)
 Decodes an extended chunk header. More...
 
static decodeLosslessChunkHeader ( $header)
 Decodes a lossless chunk header. More...
 
static extractMetadata ( $filename)
 Extracts the image size and WebP type from a file. More...
 
static extractMetadataFromChunks ( $chunks, $filename)
 Extracts the image size and WebP type from a file based on the chunk list. More...
 
- Static Public Member Functions inherited from BitmapHandler
static imageJpegWrapper ( $dst_image, $thumbPath, $quality=null)
 Callback for transformGd when transforming jpeg images. More...
 
- 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...
 

Protected Member Functions

 getScalerType ( $dstPath, $checkDstPath=true)
 Must use "im" for XCF. More...
 
- Protected Member Functions inherited from BitmapHandler
 imageMagickSubsampling ( $pixelFormat)
 Get ImageMagick subsampling factors for the target JPEG pixel format. 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 TransformationalImageHandler
 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...
 
 getThumbnailSource ( $file, $params)
 Get the source file for the transform. More...
 
- Protected Member Functions inherited from ImageHandler
 getScriptParams ( $params)
 
- Protected Member Functions inherited from MediaHandler
 formatMetadataHelper ( $metadataArray, $context=false)
 sorts the visible/invisible field. More...
 
 formatTag (string $key, $vals, $context=false)
 Override default formatting for the given metadata field. More...
 
 hasMostDerivedMethod ( $name)
 Check whether a method is implemented in the most derived class. More...
 
 logErrorForExternalProcess ( $retval, $err, $cmd)
 Log an error that occurred in an external process. More...
 
 useLegacyMetadata ()
 If this returns true, the new method getSizeAndMetadata() will not be called. More...
 
 visibleMetadataFields ()
 Get a list of metadata items which should be displayed when the metadata table is collapsed. More...
 

Static Protected Member Functions

static decodeLossyChunkHeader ( $header)
 Decodes a lossy chunk header. 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...
 

Private Attributes

const _MW_WEBP_VERSION = 1
 Version of the metadata stored in db records. More...
 
const BROKEN_FILE = '0'
 Value to store in img_metadata if there was an error extracting metadata. More...
 
const MINIMUM_CHUNK_HEADER_LENGTH = 18
 Minimum chunk header size to be able to read all header types. More...
 
const VP8X_ALPHA = 16
 
const VP8X_ANIM = 2
 
const VP8X_EXIF = 8
 
const VP8X_ICC = 32
 
const VP8X_XMP = 4
 

Additional Inherited Members

- Public Attributes inherited from MediaHandler
const METADATA_BAD = false
 
const METADATA_COMPATIBLE = 2
 
const METADATA_GOOD = true
 
const TRANSFORM_LATER = 1
 

Detailed Description

Handler for Google's WebP format https://developers.google.com/speed/webp/

Definition at line 29 of file WebPHandler.php.

Member Function Documentation

◆ canAnimateThumbnail()

WebPHandler::canAnimateThumbnail (   $file)

If the material is animated, we can animate the thumbnail.

Since
1.20
Stability: stable
to override
Parameters
File$file
Returns
bool If material is not animated, handler may return any value.

Reimplemented from MediaHandler.

Definition at line 267 of file WebPHandler.php.

◆ canRender()

WebPHandler::canRender (   $file)
Parameters
File$file
Returns
bool False if we are unable to render this image

Reimplemented from ImageHandler.

Definition at line 247 of file WebPHandler.php.

References $file.

◆ decodeExtendedChunkHeader()

static WebPHandler::decodeExtendedChunkHeader (   $header)
static

Decodes an extended chunk header.

Parameters
string$headerFirst few bytes of the header, expected to be at least 18 bytes long
Returns
bool|array See WebPHandler::decodeHeader

Definition at line 216 of file WebPHandler.php.

References $header, VP8X_ALPHA, and VP8X_ANIM.

◆ decodeLosslessChunkHeader()

static WebPHandler::decodeLosslessChunkHeader (   $header)
static

Decodes a lossless chunk header.

Parameters
string$headerFirst few bytes of the header, expected to be at least 13 bytes long
Returns
bool|array See WebPHandler::decodeHeader

Definition at line 191 of file WebPHandler.php.

References $header, and wfDebugLog().

◆ decodeLossyChunkHeader()

static WebPHandler::decodeLossyChunkHeader (   $header)
staticprotected

Decodes a lossy chunk header.

Parameters
string$headerFirst few bytes of the header, expected to be at least 18 bytes long
Returns
bool|array See WebPHandler::decodeHeader

Definition at line 165 of file WebPHandler.php.

References $header, and wfDebugLog().

◆ extractMetadata()

static WebPHandler::extractMetadata (   $filename)
static

Extracts the image size and WebP type from a file.

Parameters
string$filename
Returns
array|bool Header data array with entries 'compression', 'width' and 'height', where 'compression' can be 'lossy', 'lossless', 'animated' or 'unknown'. False if file is not a valid WebP file.

Definition at line 99 of file WebPHandler.php.

References extractMetadataFromChunks(), RiffExtractor\findChunksFromFile(), and wfDebugLog().

Referenced by getSizeAndMetadata().

◆ extractMetadataFromChunks()

static WebPHandler::extractMetadataFromChunks (   $chunks,
  $filename 
)
static

Extracts the image size and WebP type from a file based on the chunk list.

Parameters
array[]$chunksChunks as extracted by RiffExtractor
string$filename
Returns
array Header data array with entries 'compression', 'width' and 'height', where 'compression' can be 'lossy', 'lossless', 'animated' or 'unknown'

Definition at line 130 of file WebPHandler.php.

References wfDebugLog().

Referenced by extractMetadata().

◆ getMetadataType()

WebPHandler::getMetadataType (   $image)

Get a string describing the type of metadata, for display purposes.

Stability: stable
to override
Note
This method is currently unused.
Parameters
File$image
Returns
string|false

Reimplemented from MediaHandler.

Definition at line 64 of file WebPHandler.php.

◆ getScalerType()

WebPHandler::getScalerType (   $dstPath,
  $checkDstPath = true 
)
protected

Must use "im" for XCF.

Parameters
string$dstPath
bool$checkDstPath
Returns
string

Reimplemented from BitmapHandler.

Definition at line 290 of file WebPHandler.php.

◆ getSizeAndMetadata()

WebPHandler::getSizeAndMetadata (   $state,
  $path 
)

Get image size information and metadata array.

If this returns null, the caller will fall back to getImageSize() and getMetadata().

If getImageSize() or getMetadata() are implemented in the most derived class, they will be used instead of this function. To override this behaviour, override useLegacyMetadata().

Stability: stable
to override
Since
1.37
Parameters
MediaHandlerState$stateAn object for saving process-local state. This is normally a File object which will be passed back to other MediaHandler methods like pageCount(), if they are called in the same request. The handler can use this object to save its state.
string$pathThe filename
Returns
array|null Null to fall back to getImageSize(), or an array with the following keys. All keys are optional.
  • width: The width. If multipage, return the first page width. (optional)
  • height: The height. If multipage, return the first page height. (optional)
  • bits: The number of bits for each color (optional)
  • metadata: A JSON-serializable array of metadata (optional)

Reimplemented from ImageHandler.

Definition at line 49 of file WebPHandler.php.

References _MW_WEBP_VERSION, BROKEN_FILE, and extractMetadata().

◆ getThumbType()

WebPHandler::getThumbType (   $ext,
  $mime,
  $params = null 
)

Render files as PNG.

Parameters
string$ext
string$mime
array | null$params
Returns
array

Reimplemented from MediaHandler.

Definition at line 279 of file WebPHandler.php.

◆ isAnimatedImage()

WebPHandler::isAnimatedImage (   $image)
Parameters
File$image
Returns
bool

Reimplemented from MediaHandler.

Definition at line 258 of file WebPHandler.php.

◆ isFileMetadataValid()

WebPHandler::isFileMetadataValid (   $image)

Check if the metadata is valid for this handler.

If it returns MediaHandler::METADATA_BAD (or false), Image will reload the metadata from the file and update the database. MediaHandler::METADATA_GOOD for if the metadata is a-ok, MediaHandler::METADATA_COMPATIBLE if metadata is old but backwards compatible (which may or may not trigger a metadata reload).

Note
Returning self::METADATA_BAD will trigger a metadata reload from file on page view. Always returning this from a broken file, or suddenly triggering as bad metadata for a large number of files can cause performance problems.

This was introduced in 1.37 to replace isMetadataValid(), which took a serialized string as a parameter. Handlers overriding this method are expected to use accessors to get the metadata out of the File. The reasons for the change were to get rid of serialization, and to allow handlers to partially load metadata with getMetadataItem(). For example a handler could just validate a version number.

Stability: stable
to override
Since
1.37
Parameters
File$image
Returns
bool|int

Reimplemented from MediaHandler.

Definition at line 68 of file WebPHandler.php.

References MediaHandler\METADATA_BAD, MediaHandler\METADATA_COMPATIBLE, MediaHandler\METADATA_GOOD, and wfDebug().

◆ mustRender()

WebPHandler::mustRender (   $file)
Parameters
File$file
Returns
bool True, not all browsers support WebP

Reimplemented from TransformationalImageHandler.

Definition at line 239 of file WebPHandler.php.

Member Data Documentation

◆ _MW_WEBP_VERSION

const WebPHandler::_MW_WEBP_VERSION = 1
private

Version of the metadata stored in db records.

Definition at line 41 of file WebPHandler.php.

Referenced by getSizeAndMetadata().

◆ BROKEN_FILE

const WebPHandler::BROKEN_FILE = '0'
private

Value to store in img_metadata if there was an error extracting metadata.

Definition at line 33 of file WebPHandler.php.

Referenced by getSizeAndMetadata().

◆ MINIMUM_CHUNK_HEADER_LENGTH

const WebPHandler::MINIMUM_CHUNK_HEADER_LENGTH = 18
private

Minimum chunk header size to be able to read all header types.

Definition at line 37 of file WebPHandler.php.

◆ VP8X_ALPHA

const WebPHandler::VP8X_ALPHA = 16
private

Definition at line 44 of file WebPHandler.php.

Referenced by decodeExtendedChunkHeader().

◆ VP8X_ANIM

const WebPHandler::VP8X_ANIM = 2
private

Definition at line 47 of file WebPHandler.php.

Referenced by decodeExtendedChunkHeader().

◆ VP8X_EXIF

const WebPHandler::VP8X_EXIF = 8
private

Definition at line 45 of file WebPHandler.php.

◆ VP8X_ICC

const WebPHandler::VP8X_ICC = 32
private

Definition at line 43 of file WebPHandler.php.

◆ VP8X_XMP

const WebPHandler::VP8X_XMP = 4
private

Definition at line 46 of file WebPHandler.php.


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