이미지 조작기
이미지 조작기는 이미지나 다른 이미지 조작기를 받아 로드하거나 연산을 수행하는 디스플레이어블입니다. 입력으로 이미지나 다른 이미지 조작기만 받을 수 있습니다.
이미지 조작기는 디스플레이어블을 받는 모든 곳에서 사용할 수 있지만 반대는 성립하지 않습니다. 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)
- class im.Flip(im, horizontal=False, vertical=False, **properties)
이미지 조작기 im을 상하 또는 좌우로 뒤집는 이미지 조작기입니다. vertical과 horizontal로 뒤집을 방향을 제어합니다.
image eileen flip = im.Flip("eileen_happy.png", vertical=True)
- 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)))를 사용하세요.