Image Manipulators
An image manipulator is a displayable that takes an image or image manipulator, and either loads it or performs an operation on it. Image manipulators can only take images or other image manipulators as input.
An image manipulator can be used any place a displayable can, but not
vice-versa. An Image()
is a kind of image manipulator, so an
Image can be used whenever an image manipulator is required.
Warning
The use of image manipulators is
historic. A number of image manipulators that had been documented in the
past should no longer be used, as they suffer from inherent problems,
and in general (except for im.Data()
), the Transform()
displayable provides similar functionality while fixing the problems.
- class im.AlphaMask(base, mask, **properties)
An image manipulator that takes two image manipulators, base and mask, as arguments. It replaces the alpha channel of base with the red channel of mask.
This is used to provide an image's alpha channel in a second image, like having one jpeg for color data, and a second one for alpha. In some cases, two jpegs can be smaller than a single png file.
Note that this takes different arguments from
AlphaMask()
, which uses the mask's alpha channel.The two images need to have the same size, and the same oversampling factor.
- class im.Blur(im, xrad, yrad=None, **properties)
An image manipulator that blurs the image manipulator im using an elliptical kernel described by xrad and optionally yrad.
If yrad is None, it will take the value of xrad resulting in a circular kernel being used.
image logo blurred = im.Blur("logo.png", 1.5)
Deprecated since version 7.4.0: Use the
blur
transform property.
- class im.Crop(im, rect)
An image manipulator that crops rect, a (x, y, width, height) tuple, out of im, an image manipulator.
image logo crop = im.Crop("logo.png", (0, 0, 100, 307))
Deprecated since version 7.4.0: Use the
crop
transform property.
- class im.Data(data, filename, **properties)
This image manipulator loads an image from binary data.
- data
A string of bytes, giving the compressed image data in a standard file format.
- filename
A "filename" associated with the image. This is used to provide a hint to Ren'Py about the format of data. (It's not actually loaded from disk.)
- class im.FactorScale(im, width, height=None, bilinear=True, **properties)
An image manipulator that scales im (a second image manipulator) to width times its original width, and height times its original height. If height is omitted, it defaults to width.
If bilinear is true, then bilinear interpolation is used for the scaling. Otherwise, nearest neighbor interpolation is used.
image logo doubled = im.FactorScale("logo.png", 1.5)
- class im.Flip(im, horizontal=False, vertical=False, **properties)
An image manipulator that flips im (an image manipulator) vertically or horizontally. vertical and horizontal control the directions in which the image is flipped.
image eileen flip = im.Flip("eileen_happy.png", vertical=True)
- im.Grayscale(im, **properties)
An image manipulator that creates a desaturated version of the image manipulator im.
Deprecated since version 7.4.0: Set the
matrixcolor
transform property toSaturationMatrix(0)
.
- im.Sepia(im, **properties)
An image manipulator that creates a sepia-toned version of the image manipulator im.
Deprecated since version 7.4.0: Set the
matrixcolor
transform property toSepiaMatrix()
- class im.Tile(im, size=None, **properties)
An image manipulator that tiles the image manipulator im, until it is size.
- size
If not None, a (width, height) tuple. If None, this defaults to (
config.screen_width
,config.screen_height
).
Deprecated since version 7.4.0: Use
Tile(im, xysize=size, **properties)
.
im.MatrixColor
Warning
The im.MatrixColor image manipulator has been replaced by Transforms and ATL transforms that specify the matrixcolor property. Each im.matrix generator has been given a new Matrix equivalent, which can be found in the matrixcolor documentation.
The im.MatrixColor image manipulator is an image manipulator that uses a matrix to control how the colors of an image are transformed. The matrix used can be an im.matrix object, which encodes a 5x5 matrix in an object that supports matrix multiplication, and is returned by a series of functions. im.matrix objects may be multiplied together to yield a second object that performs both operations. For example:
image city blue = im.MatrixColor(
"city.jpg",
im.matrix.desaturate() * im.matrix.tint(0.9, 0.9, 1.0))
first desaturates the image, and then tints it blue. When the intermediate image is not needed, multiplying matrices is far more efficient, in both time and image cache space, than using two im.MatrixColors.
Warning
The new Matrix objects multiply in the opposite order as the im.Matrixcolor
ones. With X being the Matrix corresponding to im.Matrixcolor.x,
C*B*A
will be the Matrix corresponding to im.a*im.b*im.c
.
- class im.MatrixColor(im, matrix, **properties)
An image operator that uses matrix to linearly transform the image manipulator im.
Matrix should be a list, tuple, or
im.matrix()
that is 20 or 25 elements long. If the object has 25 elements, then elements past the 20th are ignored.When the four components of the source color are R, G, B, and A, which range from 0.0 to 1.0; the four components of the transformed color are R', G', B', and A', with the same range; and the elements of the matrix are named:
[ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t ]
the transformed colors can be computed with the formula:
R' = (a * R) + (b * G) + (c * B) + (d * A) + e G' = (f * R) + (g * G) + (h * B) + (i * A) + j B' = (k * R) + (l * G) + (m * B) + (n * A) + o A' = (p * R) + (q * G) + (r * B) + (s * A) + t
The components of the transformed color are clamped to the range [0.0, 1.0].
Deprecated since version 7.4.0: Use
Transform(im, matrixcolor=matrix, **properties)
. SeeTransform()
andmatrixcolor
.
- class im.matrix
Constructs an im.matrix object from matrix. im.matrix objects support The operations supported are matrix multiplication, scalar multiplication, element-wise addition, and element-wise subtraction. These operations are invoked using the standard mathematical operators (*, *, +, and -, respectively). If two im.matrix objects are multiplied, matrix multiplication is performed, otherwise scalar multiplication is used.
matrix is a 20 or 25 element list or tuple. If it is 20 elements long, it is padded with (0, 0, 0, 0, 1) to make a 5x5 matrix, suitable for multiplication.
Deprecated since version 7.4.0: Use
Matrix
.
- im.matrix.brightness(b)
Returns an im.matrix that alters the brightness of an image.
- b
The amount of change in image brightness. This should be a number between -1 and 1, with -1 the darkest possible image and 1 the brightest.
Deprecated since version 7.4.0: Use
BrightnessMatrix(b)
with thematrixcolor
transform property.
- im.matrix.colorize(black_color, white_color)
Returns an im.matrix that colorizes a black and white image. black_color and white_color are Ren'Py style colors, so they may be specified as strings or tuples of (0-255) color values.
# This makes black colors red, and white colors blue. image logo colored = im.MatrixColor( "bwlogo.png", im.matrix.colorize("#f00", "#00f"))
Deprecated since version 7.4.0: Use
ColorizeMatrix(black_color, white_color)
with thematrixcolor
transform property.
- im.matrix.contrast(c)
Returns an im.matrix that alters the contrast of an image. c should be greater than 0.0, with values between 0.0 and 1.0 decreasing contrast, and values greater than 1.0 increasing contrast.
Deprecated since version 7.4.0: Use
ContrastMatrix(c)
with thematrixcolor
transform property.
- im.matrix.desaturate()
Returns an im.matrix that desaturates the image (makes it grayscale). This is equivalent to calling im.matrix.saturation(0).
Deprecated since version 7.4.0: Use
SaturationMatrix(0)
with thematrixcolor
transform property.
- im.matrix.hue(h)
Returns an im.matrix that rotates the hue by h degrees, while preserving luminosity.
Deprecated since version 7.4.0: Use
HueMatrix(h)
with thematrixcolor
transform property.
- im.matrix.identity()
Returns an identity matrix, one that does not change color or alpha.
Deprecated since version 7.4.0: Use
IdentityMatrix()
with thematrixcolor
transform property.
- im.matrix.invert()
Returns an im.matrix that inverts the red, green, and blue channels of the image without changing the alpha channel.
Deprecated since version 7.4.0: Use
InvertMatrix(1.0)
with thematrixcolor
transform property.
- im.matrix.opacity(o)
Returns an im.matrix that alters the opacity of an image. An o of 0.0 is fully transparent, while 1.0 is fully opaque.
Deprecated since version 7.4.0: Use
OpacityMatrix(o)
with thematrixcolor
transform property.
- im.matrix.saturation(level, desat=(0.2126, 0.7152, 0.0722))
Returns an im.matrix that alters the saturation of an image. The alpha channel is untouched.
- level
The amount of saturation in the resulting image. 1.0 is the unaltered image, while 0.0 is grayscale.
- desat
This is a 3-element tuple that controls how much of the red, green, and blue channels will be placed into all three channels of a fully desaturated image. The default is based on the constants used for the luminance channel of an NTSC television signal. Since the human eye is mostly sensitive to green, more of the green channel is kept then the other two channels.
Deprecated since version 7.4.0: Use
SaturationMatrix(value, desat)
with thematrixcolor
transform property.
- im.matrix.tint(r, g, b)
Returns an im.matrix that tints an image, without changing the alpha channel. r, g, and b should be numbers between 0 and 1, and control what fraction of the given channel is placed into the final image. (For example, if r is .5, and the value of the red channel is 100, the transformed color will have a red value of 50.)
Deprecated since version 7.4.0: Use
TintMatrix(Color((r, g, b)))
with thematrixcolor
transform property.