이미지 조작 클래스

CodeIgniter의 이미지 조작 클래스를 사용하면 다음 작업을 수행할 수 있습니다:

  • 이미지 크기 조정

  • 썸네일 생성

  • 이미지 자르기

  • 이미지 회전

  • 이미지 워터마크

지원되는 세 가지 주요 이미지 라이브러리: GD/GD2, NetPBM, ImageMagick

참고

워터마킹은 GD/GD2 라이브러리를 사용할 때만 가능합니다. 또한 다른 라이브러리가 지원되더라도 스크립트가 이미지 속성을 계산하기 위해 GD가 필요합니다. 그러나 이미지 처리는 지정한 라이브러리로 수행됩니다.

클래스 초기화

CodeIgniter의 대부분의 클래스와 마찬가지로 이미지 클래스는 컨트롤러에서 $this->load->library 함수를 사용하여 초기화합니다:

$this->load->library('image_lib');

라이브러리가 로드되면 바로 사용할 수 있습니다. 모든 함수를 호출하는 데 사용할 이미지 라이브러리 객체는 $this->image_lib입니다.

이미지 처리

수행하려는 처리 유형(크기 조정, 자르기, 회전, 워터마크)에 관계없이 일반적인 과정은 동일합니다. 수행하려는 작업에 맞는 설정을 지정한 다음 사용 가능한 네 가지 처리 함수 중 하나를 호출합니다. 예를 들어 이미지 썸네일을 생성하려면:

$config['image_library'] = 'gd2';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width']         = 75;
$config['height']       = 50;

$this->load->library('image_lib', $config);

$this->image_lib->resize();

위 코드는 image_resize 함수에 source_image 폴더에 있는 mypic.jpg라는 이미지를 찾아 GD2 image_library를 사용하여 75 X 50 픽셀의 썸네일을 생성하도록 지시합니다. maintain_ratio 옵션이 활성화되어 있으므로 원본 가로세로 비율을 유지하면서 목표 너비와 높이에 최대한 가깝게 조정됩니다. 썸네일은 mypic_thumb.jpg라고 명명되며 source_image와 같은 위치에 저장됩니다.

참고

이미지 클래스가 처리 작업을 수행하려면 이미지 파일이 있는 폴더에 쓰기 권한이 있어야 합니다.

참고

이미지 처리는 일부 작업에서 상당한 양의 서버 메모리를 필요로 할 수 있습니다. 이미지를 처리하는 동안 메모리 부족 오류가 발생하면 최대 크기를 제한하거나 PHP 메모리 제한을 조정해야 할 수 있습니다.

처리 방법

사용 가능한 네 가지 처리 방법이 있습니다:

  • $this->image_lib->resize()

  • $this->image_lib->crop()

  • $this->image_lib->rotate()

  • $this->image_lib->watermark()

이 메소드들은 성공 시 boolean TRUE, 실패 시 FALSE를 반환합니다. 실패한 경우 다음 함수를 사용하여 오류 메시지를 가져올 수 있습니다:

echo $this->image_lib->display_errors();

좋은 방법은 처리 함수를 조건부로 사용하여 실패 시 오류를 표시하는 것입니다:

if ( ! $this->image_lib->resize())
{
        echo $this->image_lib->display_errors();
}

참고

다음과 같이 함수에 열기/닫기 태그를 전달하여 오류에 적용할 HTML 서식을 선택적으로 지정할 수 있습니다:

$this->image_lib->display_errors('<p>', '</p>');

설정

아래에 설명된 설정을 통해 이미지 처리를 필요에 맞게 조정할 수 있습니다.

모든 설정이 모든 함수에 적용되는 것은 아닙니다. 예를 들어 x/y 축 설정은 이미지 자르기에만 사용할 수 있습니다. 마찬가지로 너비와 높이 설정은 자르기에 영향을 미치지 않습니다. “가용성” 열은 어떤 함수가 해당 설정을 지원하는지 나타냅니다.

가용성 범례:

  • R - 이미지 크기 조정

  • C - 이미지 자르기

  • X - 이미지 회전

  • W - 이미지 워터마크

설정

기본값

옵션

설명

가용성

image_library

GD2

GD, GD2, ImageMagick, NetPBM

사용할 이미지 라이브러리를 설정합니다.

R, C, X, W

library_path

없음

없음

ImageMagick 또는 NetPBM 라이브러리의 서버 경로를 설정합니다. 해당 라이브러리 중 하나를 사용하는 경우 경로를 제공해야 합니다.

R, C, X

source_image

없음

없음

소스 이미지 이름/경로를 설정합니다. 경로는 URL이 아닌 상대 경로 또는 절대 서버 경로여야 합니다.

R, C, X, W

dynamic_output

FALSE

TRUE/FALSE (boolean)

새 이미지 파일을 디스크에 저장할지 동적으로 생성할지 결정합니다. 참고: 동적 설정을 선택하면 한 번에 하나의 이미지만 표시할 수 있으며 페이지에서 위치를 지정할 수 없습니다. 이미지 헤더와 함께 브라우저에 원시 이미지를 동적으로 출력합니다.

R, C, X, W

file_permissions

0644

(정수)

결과 이미지 파일에 적용할 파일 시스템 권한입니다. 경고: 8진수 정수 표기법을 사용하세요!

R, C, X, W

quality

90%

1 - 100%

이미지 품질을 설정합니다. 품질이 높을수록 파일 크기가 커집니다.

R, C, X, W

new_image

없음

없음

대상 이미지 이름/경로를 설정합니다. 이미지 복사본을 만들 때 사용합니다. 경로는 URL이 아닌 상대 경로 또는 절대 서버 경로여야 합니다.

R, C, X, W

width

없음

없음

이미지를 설정할 너비를 지정합니다.

R, C

height

없음

없음

이미지를 설정할 높이를 지정합니다.

R, C

create_thumb

FALSE

TRUE/FALSE (boolean)

이미지 처리 함수에 썸네일을 생성하도록 지시합니다.

R

thumb_marker

_thumb

없음

썸네일 표시자를 지정합니다. 파일 확장자 바로 앞에 삽입되어 mypic.jpg는 mypic_thumb.jpg가 됩니다.

R

maintain_ratio

TRUE

TRUE/FALSE (boolean)

크기 조정 또는 하드 값 사용 시 원본 가로세로 비율을 유지할지 여부를 지정합니다.

R, C

master_dim

auto

auto, width, height

크기 조정 또는 썸네일 생성 시 기준 축으로 사용할 항목을 지정합니다. 예를 들어 이미지를 100 X 75 픽셀로 크기 조정하려는 경우, 소스 이미지 크기가 해당 치수에 완벽하게 맞지 않으면 이 설정이 어느 축을 하드 값으로 사용할지 결정합니다. “auto”는 이미지가 더 높은지 더 넓은지에 따라 자동으로 축을 설정합니다.

R

rotation_angle

없음

90, 180, 270, vrt, hor

이미지 회전 시 회전 각도를 지정합니다. PHP는 반시계 방향으로 회전하므로 오른쪽으로 90도 회전은 270으로 지정해야 합니다.

X

x_axis

없음

없음

이미지 자르기를 위한 X 좌표(픽셀)를 설정합니다. 예를 들어 30으로 설정하면 왼쪽에서 30픽셀만큼 이미지를 자릅니다.

C

y_axis

없음

없음

이미지 자르기를 위한 Y 좌표(픽셀)를 설정합니다. 예를 들어 30으로 설정하면 위쪽에서 30픽셀만큼 이미지를 자릅니다.

C

설정 파일에서 설정

위의 방법으로 설정을 지정하지 않으려면 설정 파일에 넣을 수 있습니다. image_lib.php라는 새 파일을 만들고 해당 파일에 $config 배열을 추가하세요. 그런 다음 파일을 config/image_lib.php에 저장하면 자동으로 사용됩니다. 설정 파일에 설정을 저장하면 $this->image_lib->initialize() 메소드를 사용할 필요가 없습니다.

이미지 워터마킹

워터마킹 기능은 GD/GD2 라이브러리가 필요합니다.

워터마킹의 두 가지 유형

사용할 수 있는 두 가지 유형의 워터마킹이 있습니다:

  • 텍스트: 워터마크 메시지는 지정한 True Type 폰트 또는 GD 라이브러리가 지원하는 기본 텍스트 출력을 사용하여 텍스트로 생성됩니다. True Type 버전을 사용하는 경우 GD 설치에 True Type 지원이 컴파일되어 있어야 합니다(대부분은 지원하지만 모두는 아닙니다).

  • 오버레이: 워터마크 메시지는 소스 이미지 위에 워터마크가 포함된 이미지 (일반적으로 투명 PNG 또는 GIF)를 오버레이하여 생성됩니다.

이미지 워터마킹

다른 메소드(크기 조정, 자르기, 회전)와 마찬가지로 워터마킹의 일반적인 과정은 수행하려는 작업에 맞는 설정을 지정한 다음 watermark 함수를 호출합니다. 예시:

$config['source_image'] = '/path/to/image/mypic.jpg';
$config['wm_text'] = 'Copyright 2006 - John Doe';
$config['wm_type'] = 'text';
$config['wm_font_path'] = './system/fonts/texb.ttf';
$config['wm_font_size'] = '16';
$config['wm_font_color'] = 'ffffff';
$config['wm_vrt_alignment'] = 'bottom';
$config['wm_hor_alignment'] = 'center';
$config['wm_padding'] = '20';

$this->image_lib->initialize($config);

$this->image_lib->watermark();

위 예시는 16픽셀 True Type 폰트를 사용하여 “Copyright 2006 - John Doe” 텍스트를 생성합니다. 워터마크는 이미지 하단 중앙, 이미지 하단에서 20픽셀 위에 위치합니다.

참고

이미지 클래스가 처리 작업을 수행하려면 이미지 파일에 “쓰기” 파일 권한이 있어야 합니다. 예를 들어 777.

워터마킹 설정

이 표는 두 가지 유형의 워터마킹(텍스트 또는 오버레이) 모두에 사용 가능한 설정을 보여줍니다.

설정

기본값

옵션

설명

wm_type

text

text, overlay

사용할 워터마킹 유형을 설정합니다.

source_image

없음

없음

소스 이미지 이름/경로를 설정합니다. 경로는 URL이 아닌 상대 경로 또는 절대 서버 경로여야 합니다.

dynamic_output

FALSE

TRUE/FALSE (boolean)

새 이미지 파일을 디스크에 저장할지 동적으로 생성할지 결정합니다. 참고: 동적 설정을 선택하면 한 번에 하나의 이미지만 표시할 수 있으며 페이지에서 위치를 지정할 수 없습니다. 이미지 헤더와 함께 브라우저에 원시 이미지를 동적으로 출력합니다.

quality

90%

1 - 100%

이미지 품질을 설정합니다. 품질이 높을수록 파일 크기가 커집니다.

wm_padding

없음

숫자

워터마크를 이미지 가장자리에서 떨어뜨리기 위해 픽셀 단위로 설정되는 패딩 양입니다.

wm_vrt_alignment

bottom

top, middle, bottom

워터마크 이미지의 수직 정렬을 설정합니다.

wm_hor_alignment

center

left, center, right

워터마크 이미지의 수평 정렬을 설정합니다.

wm_hor_offset

없음

없음

워터마크 위치에 적용할 수평 오프셋(픽셀)을 지정할 수 있습니다. 오프셋은 일반적으로 워터마크를 오른쪽으로 이동시키지만, 정렬이 “right”로 설정된 경우 오프셋 값이 워터마크를 이미지 왼쪽으로 이동시킵니다.

wm_vrt_offset

없음

없음

워터마크 위치에 적용할 수직 오프셋(픽셀)을 지정할 수 있습니다. 오프셋은 일반적으로 워터마크를 아래로 이동시키지만, 정렬이 “bottom”으로 설정된 경우 오프셋 값이 워터마크를 이미지 위쪽으로 이동시킵니다.

텍스트 설정

이 표는 텍스트 유형 워터마킹에 사용 가능한 설정을 보여줍니다.

설정

기본값

옵션

설명

wm_text

없음

없음

워터마크로 표시할 텍스트입니다. 일반적으로 저작권 고지입니다.

wm_font_path

없음

없음

사용할 True Type 폰트의 서버 경로입니다. 이 옵션을 사용하지 않으면 기본 GD 폰트가 사용됩니다.

wm_font_size

16

없음

텍스트 크기입니다. 참고: True Type 옵션을 사용하지 않는 경우 숫자는 1-5 범위로 설정됩니다. 그렇지 않으면 사용 중인 폰트에 유효한 픽셀 크기를 사용할 수 있습니다.

wm_font_color

ffffff

없음

16진수로 지정된 폰트 색상입니다. 전체 6자리(예: 993300)와 축약된 3자리 버전(예: fff) 모두 지원됩니다.

wm_shadow_color

없음

없음

16진수로 지정된 드롭 섀도우 색상입니다. 비워두면 드롭 섀도우가 사용되지 않습니다. 전체 6자리(예: 993300)와 축약된 3자리 버전(예: fff) 모두 지원됩니다.

wm_shadow_distance

2

없음

드롭 섀도우가 표시될 폰트로부터의 거리(픽셀)입니다.

오버레이 설정

이 표는 오버레이 유형 워터마킹에 사용 가능한 설정을 보여줍니다.

설정

기본값

옵션

설명

wm_overlay_path

없음

없음

워터마크로 사용할 이미지의 서버 경로입니다. 오버레이 방법을 사용하는 경우에만 필요합니다.

wm_opacity

50

1 - 100

이미지 불투명도입니다. 워터마크 이미지의 불투명도(즉, 투명도)를 지정할 수 있습니다. 이를 통해 워터마크가 희미하게 보이고 뒤에 있는 원본 이미지의 세부 정보를 완전히 가리지 않도록 할 수 있습니다. 일반적으로 50% 불투명도가 사용됩니다.

wm_x_transp

4

숫자

워터마크 이미지가 PNG 또는 GIF 이미지인 경우 이미지의 특정 색상을 “투명”으로 지정할 수 있습니다. 이 설정(및 다음 설정)을 통해 해당 색상을 지정할 수 있습니다. 투명하게 만들 색상에 해당하는 픽셀의 이미지 내 “X” 및 “Y” 좌표(왼쪽 상단에서 측정)를 지정하여 작동합니다.

wm_y_transp

4

숫자

이전 설정과 함께 투명하게 만들 색상에 해당하는 픽셀의 좌표를 지정할 수 있습니다.

클래스 레퍼런스

class CI_Image_lib
initialize([$props = array()])
매개변수:
  • $props (array) – 이미지 처리 설정

반환:

성공 시 TRUE, 잘못된 설정의 경우 FALSE

반환 형식:

bool

이미지 처리를 위해 클래스를 초기화합니다.

resize()
반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

이미지 크기 조정 메소드를 사용하면 원본 이미지의 크기를 조정하거나, 복사본을 만들거나(크기 조정 여부 관계없이), 썸네일 이미지를 만들 수 있습니다.

실용적인 목적에서 복사본 만들기와 썸네일 만들기의 차이점은 썸네일에는 이름의 일부로 썸네일 표시자(예: mypic_thumb.jpg)가 포함된다는 것입니다.

설정 표에 나열된 모든 설정이 이 메소드에서 사용 가능하지만 rotation_angle, x_axis, y_axis는 제외됩니다.

썸네일 만들기

이 설정을 TRUE로 설정하면 크기 조정 메소드가 썸네일 파일을 만듭니다 (원본을 보존합니다):

$config['create_thumb'] = TRUE;

이 단일 설정이 썸네일을 만들지 여부를 결정합니다.

복사본 만들기

이 설정을 사용하여 경로 및/또는 새 파일 이름을 설정하면 크기 조정 메소드가 이미지 파일의 복사본을 만듭니다(원본을 보존합니다):

$config['new_image'] = '/path/to/new_image.jpg';

이 설정에 관한 참고 사항:

  • 새 이미지 이름만 지정하면 원본과 같은 폴더에 배치됩니다.

  • 경로만 지정하면 새 이미지가 원본과 같은 이름으로 대상에 배치됩니다.

  • 경로와 이미지 이름을 모두 지정하면 새 이름으로 대상 경로에 배치됩니다.

원본 이미지 크기 조정

위의 두 설정(create_thumb, new_image) 중 어느 것도 사용하지 않으면 크기 조정 메소드가 처리 대상으로 원본 이미지를 사용합니다.

crop()
반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

자르기 메소드는 크기 조정 함수와 거의 동일하게 작동하지만 다음과 같이 자를 위치를 지정하는 X 및 Y 축(픽셀) 설정이 필요합니다:

$config['x_axis'] = 100;
$config['y_axis'] = 40;

설정 표에 나열된 모든 설정이 이 메소드에서 사용 가능하지만 rotation_angle, create_thumb, new_image는 제외됩니다.

이미지를 자르는 방법의 예시:

$config['image_library'] = 'imagemagick';
$config['library_path'] = '/usr/X11R6/bin/';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['x_axis'] = 100;
$config['y_axis'] = 60;

$this->image_lib->initialize($config);

if ( ! $this->image_lib->crop())
{
        echo $this->image_lib->display_errors();
}

참고

시각적 인터페이스 없이는 이미지를 자르기 어렵기 때문에 그러한 인터페이스를 만들려는 의도가 없으면 이 메소드는 그다지 유용하지 않습니다. 저희가 개발한 CMS인 ExpressionEngine의 사진 갤러리 모듈에 정확히 이런 기능을 추가했습니다. 자르기 영역을 선택할 수 있는 JavaScript UI를 추가했습니다. (EllisLab 제공)

rotate()
반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

이미지 회전 메소드는 설정을 통해 회전 각도를 설정해야 합니다:

$config['rotation_angle'] = '90';

5가지 회전 옵션이 있습니다:

  1. 90 - 반시계 방향으로 90도 회전합니다.

  2. 180 - 반시계 방향으로 180도 회전합니다.

  3. 270 - 반시계 방향으로 270도 회전합니다.

  4. hor - 이미지를 수평으로 뒤집습니다.

  5. vrt - 이미지를 수직으로 뒤집습니다.

이미지를 회전하는 방법의 예시:

$config['image_library'] = 'netpbm';
$config['library_path'] = '/usr/bin/';
$config['source_image'] = '/path/to/image/mypic.jpg';
$config['rotation_angle'] = 'hor';

$this->image_lib->initialize($config);

if ( ! $this->image_lib->rotate())
{
        echo $this->image_lib->display_errors();
}
watermark()
반환:

성공 시 TRUE, 실패 시 FALSE

반환 형식:

bool

이미지 위에 워터마크를 만듭니다. 자세한 내용은 이미지 워터마킹 섹션을 참조하세요.

clear()
반환 형식:

void

clear 메소드는 이미지를 처리할 때 사용된 모든 값을 초기화합니다. 반복문에서 이미지를 처리하는 경우 이 메소드를 호출해야 합니다.

$this->image_lib->clear();
display_errors([$open = '<p>[, $close = '</p>']])
매개변수:
  • $open (string) – 오류 메시지 시작 태그

  • $close (string) – 오류 메시지 닫기 태그

반환:

오류 메시지

반환 형식:

string

감지된 모든 오류를 문자열 형식으로 반환합니다.

echo $this->image_lib->display_errors();