Categories
PHP

PHP 로 이미지를 그레이스케일 (grayscale) 로 변환하기

1. 이미지 파일 열기

그레이스케일 (grayscale) 로 변환할 이미지 파일을 연다.

$im = imagecreatefrompng(“tv-screen.png”);

tv-screen.png 파일은 다음과 같다.

2. 이미지를 그레이스케일로 변환하기

imagefilter() 함수를 사용하여 이미지를 그레이스케일로 변환한다.

imagefilter($im, IMG_FILTER_GRAYSCALE);

IMG_FILTER_GRAYSCALE 은 이미지를 그레이스케일로 변환하도록 지정하는 정수형 상수이다.

변환한 이미지를 파일로 저장한다.

imagepng($im, “tv-screen-gray.png”);

3. 결과 확인

저장한 이미지 파일을 열어 결과를 확인한다.

4. PHP 소스 파일

다음은 앞에서 설명한 PHP 코드로 작성된 소스 파일이다.

<?php
$im = imagecreatefrompng("tv-screen.png");
imagefilter($im, IMG_FILTER_GRAYSCALE);
imagepng($im, "tv-screen-gray.png");
?>

Categories
PHP

윈도우 10 에 윈도우용 PHP 8.2 설치하기

1. 윈도우용 PHP 다운로드

다음 링크를 클릭하여 윈도우용 PHP 다운로드 페이지를 연다.

https://windows.php.net/download/

PHP 최신 버전을 다운로드한다. “VS16 x64 Thread Safe” 섹션에 있는 Zip 링크를 클릭하면 된다.

2. 윈도우용 PHP 설치

다운로드한 .zip 파일의 압축을 푼다.

압축을 풀면 “php-8.2.3-Win32-vs16-x64” 와 같은 이름의 폴더가 생긴다. 이 폴더의 이름을 php 로 변경한다.

php 폴더를 C: 드라이브의 루트 폴더 밑으로 이동시킨다.

3. PATH 환경변수에 PHP 경로 추가하기

윈도우 키와 S 키를 동시에 눌러 검색 메뉴를 연다.

입력 박스에 “environment” 를 입력한다.

검색 결과에서 “Edit the system environment variables” 를 클릭한다.

“System Properties” 대화상자가 열리는 것을 확인한다.

“Environment Variables” 버튼을 클릭한다.

“System variables” 리스트에서 Path 를 선택하고 Edit 버튼을 클릭한다.


우측의 New 버튼을 클릭한다.

경로 리스트에 “C:\php” 를 입력하고 엔터키를 누른다.

OK 버튼을 눌러 대화상자를 닫는다.

4. 설치 결과 확인

명령프롬프트 창을 연다.

다음 명령을 입력하고 엔터키를 누른다.

php -v

PHP 버전 정보와 저작권 정보가 출력되는지 확인한다.

Categories
PHP

PHP imagettftext() 함수가 폰트 파일을 찾지 못하는 문제 해결 방법

1. 문제의 현상 (現狀) 과 원인

다음과 같이 PHP 코드를 작성한다.

<?php
$im = imagecreatetruecolor(640, 320);
$blue = imagecolorallocate($im, 0, 0, 255);

$size = 75;
$angle = 0;
$x = 45;
$y = 200;
$font_filename = "DejaVuSansMono-Bold.ttf";
$text = "xtmci.com";
imagettftext($im, $size, $angle, $x, $y, $blue, $font_filename, $text);

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

이 코드는 이미지 하나를 생성해서 그 위에 “xtmci.com” 이라는 문자열을 추가한다.

다음은 앞의 PHP 코드를 브라우저에서 실행한 결과이다.


텍스트가 출력되지 않는다.

문제의 원인은 폰트 파일의 경로를 지정하는 방식에 있다.

imagettftext() 함수는 다음과 같이 지정된 폰트 파일의 경로를 찾지 못한다.

$font_filename = “DejaVuSansMono-Bold.ttf”;

2. 문제 해결 방법

현재 디렉토리를 의미하는 “.” (마침표) 를 파일 경로에 추가하면 문제가 해결된다.

문제가 된 부분을 다음과 같이 수정한다.

$font_filename = “./DejaVuSansMono-Bold.ttf”;

브라우저에서 PHP 코드를 실행하여 결과를 확인한다.

Categories
PHP

PHP 에서 이미지에 한글 (배달의민족 을지로체 폰트) 텍스트 추가하기

1. 한글 폰트 준비하기

다음 링크를 클릭하여 배달의민족 을지로체 폰트 (font) 다운로드 페이지를 연다.

https://www.utoimage.com/?m=goods.free&mode=view&idx=21582257

TTF 버튼을 클릭하여 폰트 파일을 다운로드한다.

폰트 파일의 이름은 ‘xxxxxxxx_배민을지로체_TTF.ttf’ 이다. 이 이름을 eul-ji-ro.ttf 와 같이 짧게 변경한다.

폰트 파일을 PHP 소스 파일이 있는 디렉토리로 복사한다.

2. 이미지 오브젝트 생성

트루 컬러 (true color) 이미지 오브젝트 (object) 를 생성한다.

$im = imagecreatetruecolor(640, 480);

색상 식별자 (identifier) 에 검정색을 할당한다.

$black = imagecolorallocate($im, 0, 0, 0);

색상 식별자 (identifier) 에 흰색을 할당한다.

$white = imagecolorallocate($im, 255, 255, 255);

이미지의 배경을 검정색으로 채운다.

imagefilledrectangle($im, 0, 0, 639, 479, $black);

3. 이미지에 한글 텍스트 추가하기

폰트의 크기를 지정한다.

$size = 75;

텍스트가 표시되는 각도를 도 단위로 지정한다. 0 도일 때 텍스트가 수평으로 표시된다.

$angle = 37;

텍스트 시작 위치의 X 좌표를 지정한다.

$x = 120;

텍스트 시작 위치의 Y 좌표를 지정한다.

$y = 430;

앞에서 준비한 폰트 파일의 경로를 지정한다.

$font_filename = ‘./eul-ji-ro.ttf’;

텍스트의 내용을 지정한다.

$text = “배민 을지로체”;

텍스트를 이미지에 쓴다. imagettftext() 함수를 사용한다.

imagettftext($im, $size, $angle, $x, $y, $white, $font_filename, $text);

텍스트가 추가된 이미지는 다음과 같다.

4. 브라우저에 이미지 출력하기

이미지 출력을 위한 HTTP 헤더를 보낸다.

header(‘Content-type: image/png’);

브라우저에 이미지를 출력한다.

imagepng($im);

이미지 오브젝트를 메모리에서 클리어 (clear) 한다.

imagedestroy($im);

5. 전체 PHP 소스 코드

<?php
$im = imagecreatetruecolor(640, 480);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 639, 479, $black);

$size = 75;
$angle = 37;
$x = 120;
$y = 430;
$font_filename = './eul-ji-ro.ttf';
$text = "배민 을지로체";
imagettftext($im, $size, $angle, $x, $y, $white, $font_filename, $text);

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>