이미지 조작기

이미지 조작기는 이미지나 다른 이미지 조작기를 받아 로드하거나 연산을 수행하는 디스플레이어블입니다. 입력으로 이미지나 다른 이미지 조작기만 받을 수 있습니다.

이미지 조작기는 디스플레이어블을 받는 모든 곳에서 사용할 수 있지만 반대는 성립하지 않습니다. Image()는 이미지 조작기의 일종이므로 이미지 조작기가 필요한 곳에서 사용할 수 있습니다.

경고

이미지 조작기는 오래된 방식입니다. 과거에 문서화된 여러 이미지 조작기에는 구조적인 문제가 있어 더 이상 사용하지 않아야 합니다. 일반적으로 im.Data()를 제외하면 Transform() 디스플레이어블이 같은 기능을 제공하면서 문제도 해결합니다.

class im.AlphaMask(base, mask, **properties)

base와 mask라는 두 이미지 조작기를 인수로 받는 이미지 조작기입니다. base의 알파 채널을 mask의 빨강 채널로 바꿉니다.

색상 데이터용 jpeg 하나와 알파용 jpeg 하나처럼 별도의 이미지로 알파 채널을 제공할 때 사용합니다. 경우에 따라 jpeg 두 개가 png 하나보다 작을 수 있습니다.

마스크의 알파 채널을 사용하는 AlphaMask()와는 받는 인수가 다릅니다.

두 이미지의 크기와 오버샘플링 배수가 같아야 합니다.

class im.Blur(im, xrad, yrad=None, **properties)

xrad와 선택적인 yrad로 정의한 타원형 커널로 이미지 조작기 im을 흐리게 하는 이미지 조작기입니다.

yrad가 None이면 xrad 값을 사용하므로 원형 커널이 됩니다.

image logo blurred = im.Blur("logo.png", 1.5)

버전 7.4.0부터 사용을 권장하지 않습니다: blur 트랜스폼 속성을 사용하세요.

class im.Crop(im, rect)

이미지 조작기 im에서 (x, y, width, height) 튜플인 rect를 잘라내는 이미지 조작기입니다.

image logo crop = im.Crop("logo.png", (0, 0, 100, 307))

버전 7.4.0부터 사용을 권장하지 않습니다: crop 트랜스폼 속성을 사용하세요.

class im.Data(data: bytes, filename: str, **properties)

바이너리 데이터에서 이미지를 읽는 이미지 조작기입니다.

data

표준 파일 형식으로 압축된 이미지 데이터를 담은 바이트 문자열입니다.

filename

이미지에 연결할 가상의 파일명입니다. Ren'Py에 data 형식의 힌트를 제공합니다. 실제로 디스크에서 읽지는 않습니다.

class im.FactorScale(im, width, height=None, bilinear=True, **properties)

이미지 조작기 im의 원래 width를 width배, 원래 높이를 height배 조절하는 이미지 조작기입니다. height를 생략하면 width가 기본값입니다.

bilinear가 참이면 이중선형 보간으로 크기를 조절합니다. 그 밖의 경우 최근접 이웃 보간을 사용합니다.

image logo doubled = im.FactorScale("logo.png", 1.5)

버전 7.4.0부터 사용을 권장하지 않습니다: zoom 또는 xzoom 및 yzoom 트랜스폼 속성을 사용하세요.

class im.Flip(im, horizontal=False, vertical=False, **properties)

이미지 조작기 im을 상하 또는 좌우로 뒤집는 이미지 조작기입니다. vertical과 horizontal로 뒤집을 방향을 제어합니다.

image eileen flip = im.Flip("eileen_happy.png", vertical=True)

버전 7.4.0부터 사용을 권장하지 않습니다: 좌우 뒤집기는 xzoom, 상하 뒤집기는 yzoom을 음수로 설정하세요.

im.Grayscale(im, **properties)

이미지 조작기 im의 채도를 제거한 버전을 만드는 이미지 조작기입니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성을 SaturationMatrix(0)으로 설정하세요.

im.Sepia(im, **properties)

이미지 조작기 im에 세피아 색조를 적용한 버전을 만드는 이미지 조작기입니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성을 SepiaMatrix()로 설정하세요.

class im.Tile(im, size=None, **properties)

이미지 조작기 im을 size 크기가 될 때까지 반복 배치하는 이미지 조작기입니다.

size

None이 아니면 (width, height) 튜플입니다. None이면 (config.screen_width, config.screen_height)가 기본값입니다.

버전 7.4.0부터 사용을 권장하지 않습니다: Tile(im, xysize=size, **properties)를 사용하세요.

im.MatrixColor

경고

im.MatrixColor 이미지 조작기는 matrixcolor 속성을 지정한 Transform과 ATL 트랜스폼으로 대체되었습니다. 각 im.matrix 생성기에 대응하는 새 Matrix가 있으며 matrixcolor 문서에서 확인할 수 있습니다.

im.MatrixColor 이미지 조작기는 행렬로 이미지의 색상 변환 방식을 제어합니다. 사용하는 im.matrix 객체는 5x5 행렬을 표현하고 행렬 곱셈을 지원하며 일련의 함수가 반환합니다. im.matrix 객체들을 곱하면 두 연산을 모두 수행하는 객체를 얻을 수 있습니다. 예를 들어:

image city blue = im.MatrixColor(
    "city.jpg",
    im.matrix.desaturate() * im.matrix.tint(0.9, 0.9, 1.0))

먼저 이미지의 채도를 제거한 뒤 파란 색조를 입힙니다. 중간 이미지가 필요하지 않다면 두 im.MatrixColor를 사용하는 것보다 행렬을 곱하는 편이 시간과 이미지 캐시 공간 모두에서 훨씬 효율적입니다.

경고

새 Matrix 객체는 im.Matrixcolor 객체와 반대 순서로 곱합니다. X가 im.Matrixcolor.x에 대응하는 Matrix라면 im.a*im.b*im.c에 대응하는 Matrix는 C*B*A입니다.

class im.MatrixColor(im, matrix, **properties)

matrix로 이미지 조작기 im을 선형 변환하는 이미지 연산자입니다.

Matrix는 요소가 20개 또는 25개인 리스트, 튜플 또는 im.matrix()여야 합니다. 요소가 25개이면 21번째 이후는 무시합니다.

원본 색상의 네 성분 R, G, B, A가 0.0에서 1.0 사이이고, 변환된 색상의 네 성분 R', G', B', A'도 같은 범위이며, 행렬의 각 요소 이름이 다음과 같다면:

[ a, b, c, d, e,
  f, g, h, i, j,
  k, l, m, n, o,
  p, q, r, s, t ]

다음 식으로 변환된 색상을 계산할 수 있습니다.

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

변환된 색상의 성분은 [0.0, 1.0] 범위로 제한합니다.

버전 7.4.0부터 사용을 권장하지 않습니다: Transform(im, matrixcolor=matrix, **properties)를 사용하세요. Transform()과 matrixcolor를 참조하세요.

class im.matrix

matrix로 im.matrix 객체를 만듭니다. 행렬 곱셈, 스칼라 곱셈, 요소별 덧셈과 뺄셈을 지원하며 각각 표준 수학 연산자 *, *, +, -로 수행합니다. im.matrix 객체 두 개를 곱하면 행렬 곱셈을 수행하고 그 밖에는 스칼라 곱셈을 수행합니다.

matrix는 요소가 20개 또는 25개인 리스트나 튜플입니다. 20개이면 (0, 0, 0, 0, 1)을 덧붙여 곱셈이 가능한 5x5 행렬로 만듭니다.

버전 7.4.0부터 사용을 권장하지 않습니다: Matrix를 사용하세요.

im.matrix.brightness(b)

이미지 밝기를 바꾸는 im.matrix를 반환합니다.

b

이미지 밝기의 변경량입니다. -1에서 1 사이의 숫자여야 하며 -1은 가장 어두운 이미지, 1은 가장 밝은 이미지입니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 BrightnessMatrix(b)를 사용하세요.

im.matrix.colorize(black_color, white_color)

흑백 이미지에 색을 입히는 im.matrix를 반환합니다. black_color와 white_color는 Ren'Py 스타일 색상이므로 문자열이나 0~255 색상값의 튜플로 지정할 수 있습니다.

# This makes black colors red, and white colors blue.
image logo colored = im.MatrixColor(
    "bwlogo.png",
    im.matrix.colorize("#f00", "#00f"))

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 ColorizeMatrix(black_color, white_color)를 사용하세요.

im.matrix.contrast(c)

이미지 대비를 바꾸는 im.matrix를 반환합니다. c는 0.0보다 커야 하며, 0.0에서 1.0 사이의 값은 대비를 줄이고 1.0보다 큰 값은 대비를 높입니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 ContrastMatrix(c)를 사용하세요.

im.matrix.desaturate()

이미지의 채도를 제거하여 회색조로 만드는 im.matrix를 반환합니다. im.matrix.saturation(0) 호출과 같습니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 SaturationMatrix(0)를 사용하세요.

im.matrix.hue(h)

휘도를 유지하면서 색조를 h도 회전하는 im.matrix를 반환합니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 HueMatrix(h)를 사용하세요.

im.matrix.identity()

색상이나 알파를 바꾸지 않는 단위 행렬을 반환합니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 IdentityMatrix()를 사용하세요.

im.matrix.invert()

알파 채널은 유지하면서 이미지의 빨강, 초록, 파랑 채널을 반전하는 im.matrix를 반환합니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 InvertMatrix(1.0)를 사용하세요.

im.matrix.opacity(o)

이미지의 불투명도를 바꾸는 im.matrix를 반환합니다. o가 0.0이면 완전히 투명하고 1.0이면 완전히 불투명합니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 OpacityMatrix(o)를 사용하세요.

im.matrix.saturation(level, desat=(0.2126, 0.7152, 0.0722))

이미지의 채도를 바꾸는 im.matrix를 반환합니다. 알파 채널은 바꾸지 않습니다.

level

결과 이미지의 채도입니다. 1.0은 원본 그대로이며 0.0은 회색조입니다.

desat

채도를 완전히 제거한 이미지의 세 채널 모두에 원본의 빨강, 초록, 파랑을 얼마나 반영할지 제어하는 3요소 튜플입니다. 기본값은 NTSC 텔레비전 신호의 휘도 채널에 사용하는 상수를 바탕으로 합니다. 사람의 눈은 초록에 가장 민감하므로 다른 두 채널보다 초록을 더 많이 반영합니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 SaturationMatrix(value, desat)를 사용하세요.

im.matrix.tint(r, g, b)

알파 채널은 유지하면서 이미지에 색조를 입히는 im.matrix를 반환합니다. r, g, b는 0에서 1 사이의 숫자로, 해당 채널이 최종 이미지에 반영되는 비율을 제어합니다. 예를 들어 r이 .5이고 빨강 채널이 100이면 변환된 빨강 값은 50입니다.

버전 7.4.0부터 사용을 권장하지 않습니다: matrixcolor 트랜스폼 속성에 TintMatrix(Color((r, g, b)))를 사용하세요.