ImageProcessingInstructions

Read onlyYes

A DTO representing all information needed to process an image, mainly the target dimensions.

With this information an image can be processed by ImageMagick/GraphicsMagick.

"cropScaling" refers to the logic where the image is cropped and scaled at the same time, which was used back in TYPO3 v3/v4 but the "LocalCropScaleMaskHelper" is actually doing this in subsequent steps, but should be merged together again once there is a load of more tests.

Internal

This object is still internal as long as cropping isn't migrated yet to the Crop API.

Table of Contents

Properties

$cropArea  : Area|null
$height  : int
$width  : int

Methods

__construct()  : mixed
fromCropScaleValues()  : self
Get numbers for scaling the image based on input.
fromProcessingTask()  : ImageProcessingInstructions

Properties

Methods

__construct()

public __construct([int<0, max> $width = 0 ][, int<0, max> $height = 0 ][, Area|null $cropArea = null ]) : mixed
Parameters
$width : int<0, max> = 0
$height : int<0, max> = 0
$cropArea : Area|null = null

fromCropScaleValues()

Get numbers for scaling the image based on input.

public static fromCropScaleValues(int<0, max> $incomingWidth, int<0, max> $incomingHeight, int<0, max>|string $width, int<0, max>|string $height, array<string|int, mixed> $options) : self

Notes by Benni in 2023 in order to understand this magic:

Relevant if an image should be

  • scaled
  • cropped
  • keep the aspect ratio while scaling?
  • use a target width or height
  • or rather have a minimum or maximum width and/or height

This method does a lot of magic:

  • $incomingWidth/$incomingHeight contains the size of an original image for example.
  • $w and $h are the width and height that are originally required the image to be like when scaled. They could contain a "c" for cropping information or "m" for "Ensure that even though $w and $h are given, one containing an $m that we keep the aspect ratio." "m" really allows to say $w="50c" that this might in a result with [0]=100 because $w would follow $h in order to keep aspect ratio. Obviously this only works properly if both m and c are working
  • $options contain "maxW" (never go beyond this width, even if scaling larger as this), same with "maxH" and "minW" and "minH" (note these get streamlined to maxWidth, maxHeight, minWidth, minHeight)

The return values are a bit tricky to understand, so I added a few tests:

  • AFAICS "0" and "1" are always used as "these are the target width / height" which my image should be scaled to, or cropped down to. Notes: If you hand in $info[0] and $incomingHeight a "0", you will get "0" as return value back! but

  • "crs" if the image should be cropped (which is indicated by one of $w or $h contain the "c" at the end)

  • "cropH" and "cropV" is also set when one of the incoming $w or $h contains a "c". Notes: "cropH" and "cropV" are rather cryptic, and can't really be used outside of this context. They are then "magically calculated" outside of this function $offsetX = (int)(($data[0] - $data['origW']) * ($data['cropH'] + 100) / 200); $offsetY = (int)(($data[1] - $data['origH']) * ($data['cropV'] + 100) / 200);

  • "origW" / "origH" seems to be the values that were handed in as $w and $h, but they might be altered f.e. "origH" is set when $w is given and $options["maxH"]

  • When such a rearranging calculation was made ("maxH" reduces the original $w due to constraints), then the return value "max" is set.

  • When using the "c" argument, origH and origW seem to contain the values that you would expect when NOT doing a crop scenario whereas $incomingWidth and $incomingHeight contain the target width and height that could be larger than originally requested.


Parameters
$incomingWidth : int<0, max>

the width of an original image for example, can be "0" if there is no original image

$incomingHeight : int<0, max>

the height of an original image for example, can be "0" if there is no original image

$width : int<0, max>|string

"required" width that is requested, can be "" or "0" or a number of a magic "m" or "c" appended

$height : int<0, max>|string

"required" height that is requested, can be "" or "0" or a number of a magic "m" or "c" appended

$options : array<string|int, mixed>

Options: Keys are like "maxW", "maxH", "minW", "minH" (streamlined to "maxWidth", "maxHeight", "minWidth", "minHeight")

Return values
self

        
On this page

Search results