클래스 초기화
CodeIgniter의 다른 클래스처럼, 이 클래스 역시 컨트롤러에서
"$this->load->library" 함수를 통해 초기화됩니다. :
$this->load->library('image_lib');
이 클래스가 초기화되고 나면, 사용 준비된 상태가 됩니다.
이미지 라이브러리 객체의 함수를 호출하기 위해 다음 코드를 사용합니다. :
this->image_lib
이미지 프로세싱 작업
당신이 원하는 작업, 이를테면, 리사이징 , 자르기, 회전, 워터마킹 작업에 관계없이,
일반 프로세싱 작업은 동일한 방법으로 사용됩니다.
그리고, 원하는 작업에 맞게끔 환경설정을 변경할 수 있습니다.
그 후 4개의 작업 중 하나를 실행하게 됩니다.
예를 들어, 썸네일 이미지를 생성하기 위해 다음처럼 할 수 있습니다. :
$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();
위 코드는 "source_image" 디렉토리에 위치한 "mypic.jpg"을 지정한 후,
image_resize 함수를 실행합니다.
또한, GD2 라이브러리를 사용하여 "75 X 50" 픽셀 사이즈의 썸네일을 생성합니다.
"maintain_ratio" 속성을 활성화하였기 때문에 원본 이미지 가로세로비를 최대한
유지하면서 원하는 폭과 넓이로 줄일 것입니다.
썸네일은 "source_image" 디렉토리에 "mypic_thumb.jpg" 이름으로 생성될 것입니다.
주의사항
이미지 클래스가 이미지 관련 작업을 하기 위해서, 이미지가 위치한 디렉토리는
쓰기 권한이 있어야 합니다.
주의사항
이미지 프로세싱 작업이 가능하려면, 서버 메모리가 충분하여야 합니다.
작업 시, 메모리 한계 에러가 발생할 경우, 최대 한계 메모리를 설정해야 될 수 있습니다.
혹은, PHP의 메모리 한계 설정 조정이 필요할 수 있습니다.
프로세싱 방법
4개의 사용가능한 프로세싱 방법이 있습니다.
- $this->image_lib->resize()
- $this->image_lib->crop()
- $this->image_lib->rotate()
- $this->image_lib->watermark()
이 메소드들은 성공시 TRUE를, 실패시 FALSE를 반환합니다.
실패시 다음 함수를 통해 에러메시지를 확인할 수 있습니다. :
echo $this->image_lib->display_errors();
조건문을 통해 프로세싱 함수를 사용하는 것이 좋습니다.
다음은 실패시 에러메시지를 보여주는 코드입니다. :
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
주의사항
선택사항으로 에러메시지 출력 포맷을 지정할 수 있습니다.
다음처럼, 시작 및 마침 태그를 지정함으로 그렇게 할 수 있습니다. :
$this->image_lib->display_errors('<p>', '</p>');
환경설정
아래에서 이미지 프로세싱 작업시 사용되는 환경설정을 보여줍니다.
모든 설정이 각 함수마다 가능한 것이 아님에 주의하십시오.
예를 들어, "x/y axis" 설정은 "이미지 자르기" 작업에만 유효합니다.
이와 비슷하게, "width 및 height" 설정은 자르기 시 영향을 끼치지 않습니다.
"availability"(가용성) 필드는 지원되는 속성을 보여줍니다.
"Availability" 컬럼 종류 :
R - 이미지 리사이징
C - 이미지 자르기
X - 이미지 화전
W - 이미지 워터마킹
설정항목 | 기본값 | 가능항목 | 설명 | 가용성 |
image_library | GD2 | GD, GD2, ImageMagick, NetPBM |
사용할 이미지 라이브러리를 선택합니다. | R, C, X, W |
library_path | None | 지정된값아님 | ImageMagick 또는 NetPBM 라이브러리가 위치한 서버 경로를 설정합니다. 둘 중 어느 하나라도 사용한다면 반드시 경로를 설정하여야 합니다. |
R, C, X R, C, S, W |
source_image | None | 지정된값아님 | 소스 이미지 이름/경로를 설정합니다. 해당 경로는 서버의 절대경로 또는 상대경로여야 합니다. 또한 URL 형태의 경로가 아닙니다. |
|
dynamic_output | FALSE | TRUE/FALSE (boolean) |
새 이미지 파일이 디스크에 저장될 지, 아니면 동적으로 생성될지 결정할 수 있습니다. 주의사항: 동적으로 저장되도록 설정한다면, 한번에 한 이미지만 보여질 것입니다. 또한, 페이지 내에 위치할 수 없습니다. 간단히 원시 이미지 형태로 브라우저에 헤더와 함께 동적으로 보여질 것입니다. |
R, C, X, W |
file_permissions | 0644 | (integer) | 결과 이미지 파일이 디스크에 저장될 때, 파일 퍼미션을 설정합니다. 경고: 8진수 표기법으로 설정하여야 합니다. |
R, C, X, W |
quality | 90% | 1 - 100% | 이미지 품질을 설정합니다. | R, C, X, W |
new_image | None | 지정된값아님 | 대상 이미지 이름/경로를 설정합니다. 이미지 복사본 생성 시, 이 설정정보를 사용합니다. 해당 경로는 서버의 절대경로 또는 상대경로여야 합니다. 또한 URL 형태의 경로가 아닙니다. |
R, C, X, W |
width | None | 지정된값아님 | 설정하길 원하는 이미지 폭을 지정합니다. | R, C |
height | None | 지정된값아님 | 설정하길 원하는 이미지 높이를 지정합니다. | 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 | None | 90, 180, 270, vrt, hor | 이미지 회전 시, 회전 각도를 설정합니다. PHP는 시계반대방향으로 회전시킴에 유의하십시오. 따라서, 오른쪽 90도 회전하려면, 270 도로 설정하여야 합니다. |
X |
x_axis | None | 지정된값아님 | 이미지 자르기 시, 픽셀단위의 X 좌표를 설정합니다. 예를 들어, 30 으로 설정 시, 왼쪽으로부터 30 픽셀을 자를 것입니다. |
C |
y_axis | None |
지정된값아님 |
이미지 자르기 시, 픽셀단위의 Y 좌표를 설정합니다. 예를 들어, 30 으로 설정 시, 꼭대기로부터 30 픽셀을 자를 것입니다. |
config 파일을 통한 환경설정정보 세팅
위 메소드로 환경설정정보를 세팅하는 걸 원하지 않는다면,
대신 config 파일에 해당 정보를 설정할 수 있습니다.
간단히 "imag_lib.php" 파일을 생성하십시오.
해당 파일 내용에 $config 배열을 추가하십시오.
그리고, "config/image_lib.php" 경로로 저장하십시오.
이렇게하면, 자동으로 해당 정보가 사용될 것입니다.
이처럼 config 파일로 환경설정정보를 세팅하였다면,
"$this->image_lib->initialize()" 메소드를 사용할 필요가 없습니다.
이미지 워터마킹
워터마킹을 위해서 GD/GD2 라이브러리가 필요합니다.
워터마킹 두가지 타입
- 텍스트 형식
워터마크 메시지가 텍스트 형태로 생성될 것입니다.
이 때, True 타입 폰트가 사용되거나 GD 라이브러리가 지원하는 원시 텍스트가
출력될 것입니다.
True Type 버전을 사용하길 원한다면, GD 라이브러리 설치 시, True Type이 지원되도록
컴파일하여야 합니다.
(대부분이 이와 같지만, 모두가 그런 것은 아닙니다.)
- 오버레이 형식
워터마크 메시지가 이미지 오버레이 형태로 생성될 것입니다.
(보통, 투명한 형식의 PNG 또는 GIF가 사용됩니다.)
이것은 원본 이미지에 포함되어 보여질 것입니다.
특정 이미지에서의 워터마킹
다른 메소드(리사이징, 자르기, 회전)와 같이, 워터마킹 작업 역시 환경설정정보를
세팅한 후 실행됩니다.
다음은 그 예입니다. :
$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 | None | 지정된값아님 | 소스 이미지 이름/경로를 설정합니다. 해당 경로는 서버의 절대경로 또는 상대경로여야 합니다. 또한 URL 형태의 경로가 아닙니다. |
dynamic_output | FALSE | TRUE/FALSE (boolean) |
새 이미지 파일이 디스크에 저장될 지, 아니면 동적으로 생성될지 결정할 수 있습니다. 주의사항: 동적으로 저장되도록 설정한다면, 한번에 한 이미지만 보여질 것입니다. 또한, 페이지 내에 위치할 수 없습니다. 간단히 원시 이미지 형태로 브라우저에 헤더와 함께 동적으로 보여질 것입니다. |
quality | 90% | 1 - 100% | 이미지 품질을 설정합니다. |
wm_padding | None | A number | 패딩 값을 픽셀 단위로 설정할 수 있습니다. 이것은 이미지의 가장자리에서 얼마나 떨어져 있을지 설정할 수 있게 해줍니다. |
wm_vrt_alignment | bottom | top, middle, bottom |
워터마크 이미지의 세로 정렬값을 설정합니다. |
wm_hor_alignment | center | left, center, right |
워터마크 이미지의 가로 정렬값을 설정합니다. |
wm_hor_offset | None | 지정된값아님 | 워터마크 가로축 오프셋 값을 픽셀 단위로 설정할 수 있습니다. 이 값만큼, 워터마크가 오른쪽으로 이동할 것입니다. 단, 정렬값을 "right"로 설정하였다면 워터마크가 왼쪽으로 이동할 것입니다. |
wm_vrt_offset | None | 지정된값아님 | 워터마크 세로축 오프셋 값을 픽셀 단위로 설정할 수 있습니다. 이 값만큼, 워터마크가 아래로 이동할 것입니다. 단, 정렬값을 "bottom"으로 설정하였다면 워터마크가 윗쪽으로 이동할 것입니다. |
텍스트 타입의 환경설정정보
아래 표는 텍스트 타입에서 사용가능한 설정정보를 보여줍니다.
설정항목 | 기본값 | 가능항목 | 설명 |
wm_text | None | 지정된값아님 | 워터마크로 보여줄 텍스트. 간략한 정보. 예를 들면, "copyright"나 "공지사항"을 지정할 수 있습니다. |
wm_font_path | None | 지정된값아님 | 사용하길 원하는 True Type 폰트의 서버 경로. 이 옵션을 지정하지 않으면, 원시 GD 폰트가 사용될 것입니다. |
wm_font_size | 16 | 지정된값아님 | 해당 텍스트의 폰트 사이즈. 주의사항: True Type을 사용하지 않는 경우, 이 값은 "1 - 5" 사이가 될 것입니다. 반대의 경우, 해당 폰트가 지원하는 어떤 사이즈라도 넣을 수 있습니다. |
wm_font_color | ffffff | 지정된값아님 | 폰트 색깔로 16진수로 표현됩니다. 6자리(예-993300)로 표현하며, 지원되는 경우 축약 형태로 3자를 적을 수 있습니다.(예- fff) |
wm_shadow_color | None | 지정된값아님 | 그림자 색깔로 16진수로 표현됩니다. "drop shadow"를 설정하지 않는 경우, 이 정보가 사용되지 않습니다. |
wm_shadow_distance | 3 | 지정된값아님 | 해당 폰트에서 그림자 표현 시, 폰트와 그림자와의 간격을 픽셀단위로 설정합니다. |
오버레이 타입의 환경설정정보
아래 표는 오버레이 타입에서 사용가능한 설정정보를 보여줍니다.
설정항목 | 기본값 | 가능항목 | 설명 |
wm_overlay_path | None | 지정된값아님 | 워터마킹 작업을 할 이미지의 서버 경로. 오버레이 타입시에만 요구되는 정보입니다. |
wm_opacity | 50 | 1 - 100 | 이미지 투명도. 워터마크 이미지 투명도를 설정할 수 있습니다. 이것은 워터마크가 희미하도록 만듭니다. 원본 이미지 뒤쪽에 있는 것처럼 보여 상세내용을 가리지 않도록 합니다. 보통 50% opacity 를 사용합니다. |
wm_x_transp | 4 | A number | 워터마크 이미지가 PNG 또는 GIF 라면, 투명도 색상을 지정할 수 있습니다. 해당 이미지 왼쪽 위 모서리로부터의 X, Y 좌표값과 함께 작동합니다. (아래 속성과 함께 사용됩니다.) |
wm_y_transp | 4 | A number | 워터마크 이미지가 PNG 또는 GIF 라면, 투명도 색상을 지정할 수 있습니다. 해당 이미지 왼쪽 위 모서리로부터의 X, Y 좌표값과 함께 작동합니다. (위 속성과 함께 사용됩니다.) |
CodeIgniter의 이미지 조작 클래스는 다음 작업을 가능하게 합니다.
- 이미지 리사이징 (사이즈 조절)
- 썸네일 생성 (대략적 형태를 구별할 수 있는 작은 사이즈의 이미지)
- 이미지 자르기
- 이미지 회전
- 워터마킹 이미지
3개의 대표적 이미지 라이브러리를 지원합니다. : GD/GD2, NetPBM, ImageMagick
주의사항
워터마킹 작업은 GD/GD2 라이브러리를 통해서만 지원됩니다.
특정 작업 시, 다른 라이브러리에서 지원하는 경우라 하더라도, 이미지 속성 계산 작업을 위해
GD 라이브러리는 꼭 필요합니다.
하지만, 이미지 프로세싱 작업 시에는 당신이 지정한 라이브러리가 사용될 것입니다.