ImageTools
Scale
scale an image by the specified ratio or to the specified size
Calling Sequence
Parameters
Options
Description
Examples
Scale( img, scale, optScaleX, opts )
img
-
Image; the image to scale
scale
numeric or range(integer); scale factor or desired height range of scaled image
optScaleX
(optional) numeric or range(integer); width scale factor or desired width range of image
opts
(optional) equation(s) of the form option = value; specify options for the Scale command
method = bspline or nearest
Specifies the method of interpolation. The default method is bspline.
antialias = none or posint
Specifies the size of the antialiasing filter. To skip the antialiasing, use antialias = none. The default is none.
The Scale command rescales an image, producing a new image with the specified size.
The img parameter is the input image.
The scale parameter specifies either the desired scaling ratio, or the desired height of the scaled image. The former is expressed as a numeric value. The latter is expressed as an integer range giving the desired resulting Array indices.
The optional optScaleX parameter specifies a different ratio or a desired size for the width of the resulting image. It is expressed in the same form as the scale parameter. If optScaleX is omitted, which is the usual case, the image is scaled by the same ratio in both dimensions. If scale is specified as a range, a ratio is computed from that range and that ratio is applied to the width as well as the height.
By default, scaling is done using bicubic B-spline interpolation, which is both reasonably fast, and produces excellent results. When reducing images using scale factors smaller than 1/2.5, the scaling is done in steps to avoid unnecessary information loss. For example, scaling by 1/4 is accomplished by scaling twice by 1/2. The nature of the algorithm makes this stepwise scaling unnecessary when enlarging an image.
If the method=nearest option is specified, scaling is done using the nearest-neighbor algorithm. For enlargement, this tends to produce pixelated images. For reduction, it produces grainy images. However, the algorithm is very fast and is often suitable for producing low-quality thumbnails of an image.
When applied to three-dimensional Arrays representing multi-channel images, for example RGB, the scaling is done separately for each channel (the channels do not interact).
with⁡ImageTools:
img≔Create⁡200,300:
forito300doimg1..200,i≔evalf⁡0.5+0.5⁢sin⁡0.005+0.003⁢i⁢ienddo:
Embed⁡img
img_near≔Scale⁡img,0.35,method=nearest,antialias=none:
img_bspl≔Scale⁡img,0.35,antialias=none:
img_near_aa≔Scale⁡img,0.35,method=nearest:
img_bspl_aa≔Scale⁡img,0.35:
Embed⁡img_near,img_bspl,img_near_aa,img_bspl_aa
img_near2≔Scale⁡img_near,10.35,method=nearest:
img_bspl2≔Scale⁡img_bspl,10.35:
img_near_aa2≔Scale⁡img_near_aa,10.35,method=nearest:
img_bspl_aa2≔Scale⁡img_bspl_aa,10.35:
Embed⁡img_near2,img_bspl2,img_near_aa2,img_bspl_aa2
See Also
Download Help Document