PHP를 이용해서 이미지를 프로그래밍적으로 생성하고 변경할 수 있다.
GD
이미지처리 작업은 PHP의 기본적인 기능에는 포함되어 있지 않다. 대신 라이브러리나 외부 프로그램과 연동을 해야 하는데 GD라이브러리가 가장 많이 사용된다.
GD의 설치
GD는 기본적으로 사용할 수 있도록 활성화 되어 있는 경우도 있고, 그렇지 않은 경우도 있다. 시스템의 현재 상황을 파악할 수 있는 방법은 phpinfo()를 실행해 보는 것이다. 아래 코드를 실행해보자.
<?php phpinfo(); ?>
출력 내용 중에서 특히 중요한 부분은 아래와 같다.
만약 gd가 보이지 않는다면 이를 활성화하거나 설치해야 한다.
php.ini 파일을 열어보고 아래와 같은 부분이 있는지 확인해보자. 만약 아래와 같다면 주석 ;를 제거해준다.
;extension=php_gd2.dll
윈도우 버전 Bitnami 사용자
윈도우 버전 bitnami를 사용하고 있다면 php.ini 파일에서 extension_dir 지시자의 값을 아래와 같이 변경해준다. 아래의 설정은 필자의 설정이기 때문에 자신에게 맞는 설정은 직접해주어야 한다.
extension_dir = "D:\BitNami\wampstack-5.4.21-0\php\ext"
리눅스
우분투처럼 apt-get을 사용할 수 있다면 아래와 같은 명령으로 gd를 설치 할 수 있다.
sudo apt-get install php5-gd;
예제
아래의 예제를 실행하기 위해서는 button.php과 같은 디렉토리에 button.png 파일이 존재해야 한다. 편의를 위해서 다음 이미지를 사용하자.
아래와 같이 접근하면 coding이라는 텍스트가 버튼에 표시될 것이다.
http://localhost/image/button.php?text=coding
코드는 아래와 같다.
<?php header("Content-type: image/png"); $string = $_GET['text']; $im = imagecreatefrompng("button.png"); $orange = imagecolorallocate($im, 60, 87, 156); $px = (imagesx($im) - 7.5 * strlen($string)) / 2; imagestring($im, 4, $px, 9, $string, $orange); imagepng($im); imagedestroy($im); ?>
아래의 예제는 위의 예제를 이용해서 버튼을 실시간으로 생성해주는 예제다.
<html> <body> <img src="button.php?text=intro" /> <img src="button.php?text=member" /> <img src="button.php?text=history" /> <img src="button.php?text=mission" /> </body> </html>
실행결과는 아래와 같다.
예제2. 워터마크
이미지에 워터마크를 찍어보자. 아래에 3장의 이미지가 있다.