imageaffinematrixget()은 PHP에 내장된 함수로, 아핀 변환(affine transformation) 행렬을 얻기 위해 사용됩니다. 이 함수는 주로 선형 대수학과 컴퓨터 그래픽스 분야에서 활용되며, 이미지의 이동, 확대·축소, 회전, 기울이기 등의 변환을 수학적으로 표현할 때 유용합니다.
문법(Syntax)
array imageaffinematrixget(int $type, mixed $options)
매개변수(Parameters)
imageaffinematrixget() 함수는 $type과 $options, 두 개의 매개변수만 받습니다.
$type − 변환의 종류를 지정하는 정수 값으로, 다음 IMG_AFFINE 상수 중 하나를 사용합니다.
IMG_AFFINE_TRANSLATE (이동)
IMG_AFFINE_SCALE (확대/축소)
IMG_AFFINE_ROTATE (회전)
IMG_AFFINE_SHEAR_HORIZONTAL (가로 기울이기)
IMG_AFFINE_SHEAR_VERTICAL (세로 기울이기)
$options − 변환 옵션 값입니다. $type이 IMG_AFFINE_TRANSLATE 또는 IMG_AFFINE_SCALE인 경우, 'x'와 'y' 키를 가진 배열(float 값)을 전달해야 합니다. 반면 $type이 IMG_AFFINE_ROTATE, IMG_AFFINE_SHEAR_HORIZONTAL 또는 IMG_AFFINE_SHEAR_VERTICAL인 경우에는 각도(angle)를 나타내는 float 값을 전달해야 합니다.
반환값(Return Values)
성공 시 아핀 변환 행렬을 반환하며, 이 배열은 0부터 5까지의 키와 float 값으로 구성됩니다. 실패할 경우 false를 반환합니다.
예제 1: IMG_AFFINE_SCALE 사용하기
<?php
$matrix_scale = imageaffinematrixget(IMG_AFFINE_SCALE, array('x' => 2, 'y' => 3));
print_r($matrix_scale);
?>
출력 결과
Array
(
[0] => 2
[1] => 0
[2] => 0
[3] => 3
[4] => 0
[5] => 0
)
위 예제에서 x축 방향으로 2배, y축 방향으로 3배 확대하는 스케일 변환 행렬이 생성되었습니다.
예제 2: 세로 기울이기(Shear Vertical) 적용하기
<?php
$angle = 280;
// imageaffinematrixget() 함수로 아핀 행렬 가져오기
$matrix_vertical = imageaffinematrixget(IMG_AFFINE_SHEAR_VERTICAL, $angle);
// 행렬 값 출력
print("<pre>".print_r($matrix_vertical, true)."</pre>");
?>
출력 결과
Array
(
[0] => 1
[1] => -5.6712818196177
[2] => 0
[3] => 1
[4] => 0
[5] => 0
)
이처럼 각도 280도를 지정하여 세로 방향 기울이기(shear) 변환 행렬을 손쉽게 계산할 수 있습니다. 반환된 행렬은 imageaffinematrixconcat()이나 imageaffine() 함수와 함께 사용하여 실제 이미지에 변환을 적용할 수 있습니다.