먼저 PHP.ini를 보세여
extension=php_gd.dll이란 항목이 보일겁니다.
여기에 ";"로 주석처리 되어 있다면 이걸 제거해주시고 저장후에 본 강좌를 따라와주
세여~
GD라이브러리에 대해 간단히 알아보면
GIF, PNG, JPEG 포멧을 지원합니다.
하지만 GIF는 현재 저작권 문제로 지원하고 있지 않구여~
JPEG를 지원합니다.
imageCreate - 새이미지 생성
예) $img=imageCreate(100,100); //100*100짜리 이미지를 $img에 저장
imageCreatefromGif - 기존 GIF이미로부터 새로 만듬
예) $img=imageCreate("kakaka.gif"); //kakaka.gif로부터 이미지 생성
imageGif - 생성한 이미지를 브라우저나 파일로 출력
예) imagejpeg($img,"kekeke.jpeg); //브라우저에 kekek.gif로 출력
imageDestroy - Create함수에 의해 점유된 메모리 반환
기타 등등등 입니다. 절라 많져 -.-;;
일단~
200*200 이미지를 만들어 보져 =)
1 2 3 4 | < ? $img =imageCreate(200,200); imagejpeg( $img ); ?> |
여기서 이미지 뒤에 스트링을 안쓴것은 그 폴더가 웹폴더이기 때문입니다.
이게 뭔소리냐??하면여 읽기 전용이라는 겁니다.
쓰기가 안되니까 에러가 나겠져? 그래서 화일이름없이 걍 쓰는 겁니다.
넘 쉬운거라서 설명없이 넘어 가겠습니다.
이제 또 할일이 있네여~ 본격적인 그레프 생성
다음 표를 보져
대상 | 1월 | 2월 | 3월
A군 | 100 | 130 | 140
B군 | 150 | 140 | 120
A군과 B군은 친구입니다. 그런데 수능모의고사를 봤는데 위와 같이 나왔습니다.
정말 다정한 친구입니다. 여러분들은 담임선생님이 알아 보기 쉽게 이걸 이미지로 보
여 주려 합니다. 현재 A군은 어쩌구 B군은 어쩌구 하는걸 보여주기 위해서엽~
이제 만들어 봅시다.
위에서 설명한 걸로는 많이 부족하기 때문에
함수가 더 있는지 알아 봅시다.
먼저 색깔을 지정하는 함수입니다.
$white=imagecolorAllocate($img,255,255,255);
RGB로 255,255,255는 화이트입니다. 즉 화이트란 색을 준겁니다. $img에 생성되있
는 이미지에 적용하겠다란 뜻입니다.
imageLine($img,10,10,190,10,$white);
$img에 생성된 변수에 10,10에서 190,10까지 선을 그으란 소립니다. 흰색으로...
그럼 함 만들어 보져
현재 확인된 DATA는 3줄입니다.점을 찍어서 보여 드릴수도 있겠구...
또는 직선으로 그어서 보여 줄수도 있겠네여
그럼 선으로 그려봅시다.
좌우 여백 10씩 빼보져
그럼 x축은 10-190까지입니다. Y축역시 위아래 빼고 다면 10-190까지이군요
^^;;
적용된 공식을 만들어보져
4개의 축이 있다면
X1-190*1/4
X2-190*2/4
X3-190*3/4
X4-190*4/4
5개가 되어도 마찬가지겠네여???
^^;; 약간의 버그가 있기는 하지만 10-190까지의 범위를 벋어나지는 않을겁니다.
y축도 같겠네여??? 당빠~ 그런데 왜 이렇게 어려운 이야길 하냐구엽?
여러분들이 나중에 sql에서 바로 데이타를 뽑아와서 할때는 어쩔거져? ^^??
하여간 이것가지 생각하시고 하셔야 겠져???
이제 그려봅시다.
1 2 3 4 5 6 7 8 9 10 11 | < ? $img =imageCreate(200,200); $black =imagecolorAllocate( $img ,0,0,0); $white =imagecolorAllocate( $img ,255,255,255); $pink =imagecolorAllocate( $img ,255,100,255); imageLine( $img ,10,100,95,130, $white ); imageLine( $img ,95,130,190,150, $white ); imageLine( $img ,10,150,95,140, $pink ); imageLine( $img ,95,140,190,120, $pink ); imagejpeg( $img ); ?> |
드뎌 다 만들었네여~
먼저 $black에서 배경이미지 색을 검은색으로 정의 했습니다.
그리고 다른색을 쓸거라고 화이트와 핑크를 정의 했으며 라인을 2번식 그어 A군과 B
군의 성적데이타를 그레픽하게 실시간으로 그려 줬습니다.
그리고 10번에서 출력~~~
SQL에서 바로 불러온다면 좀 머리아프시겠지만 잘 응용만 하신다면 가능합니다.
다른사람이 해 놨으니까여~ ^^;;
$img_number = imagecreate(300,240); // 그림판 생성 $backcolor = imagecolorallocate( $img_number ,000,000,000); // 배경 색상 생성 $textcolor = imagecolorallocate( $img_number ,119,114,211); // 스트링 색상 생성 $lineColor = imagecolorallocate( $img_number , 255, 23, 47); // 선 색상 생성 /** [선그리기] 그림판 객체 시작 좌표 X 시작 좌표 Y 종료 좌표 X 종표 좌표 Y 선 색상 */ imageline( $img_number , 0, 0, 100, 100, $lineColor ); /** [배경색상 채우기] 그림판 객체 X 좌표 Y 좌표 배경색상 객체 */ imagefill( $img_number ,0,0, $backcolor ); /** 출력될 스트링 지정 */ $number = "IP - $_SERVER[REMOTE_ADDR]" ; /** [그림판에 문자열 출력] 그림판 크기, 글자크기, X 위치 Y 위치 출력될 스트링 문자열 색상 */ Imagestring( $img_number ,10,10,10, $number , $textcolor ); Imagestring( $img_number ,10,10,30, $number , $textcolor ); /** 헤더 파일 생성 */ header( "Content-type: image/jpeg" ); /** 지금 파일을 이미지로 변환 */ imagejpeg( $img_number ); |
[그냥 GD로 PNG 이미지 파일 만들기]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <? header ( "Content-type: image/png" ); $width = "271" ; $height = "131" ; $im =ImageCreate( $width , $height ); // 이미지의 크기를 정합니다. $white = ImageColorAllocate ( $im , 255, 255, 255); // 사용할 색상 설정 $gray = ImageColorAllocate( $im ,200,200,200); // 사용할 색상 설정 ImageRectangle( $im ,0,0,270,130, $gray ); ImageTTFText( $im ,10,0,5,128, $gray , "fonts/H2SA1M.TTF" , "Create By Wizard." ); ImagePNG( $im ); ImageDestroy( $im ); // 이미지에 사용한 메모리 제거 ?> |
처음에 이미지를 Create 한다.
$white 색상을 alloc 해주면 Create된 이미지 바탕색이 흰색으로 칠해진다.
만약 $white 보다 $gray를 먼저 Alloc 해주면 바탕색이 회식이 된다.
그다음에 ImageRectangle 해서 걍 테두리 회색으로 칠하고
ImageTTFText 로 걍 글씨 썼음.
[1의 실행예]
이것을 다른 이미지 파일을 포게보장..
2. 1과 다른 이미지를 포갠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <? header ( "Content-type: image/png" ); include "gdkorea.php" ; $width = "271" ; $height = "131" ; $im =ImageCreate( $width , $height ); // 이미지의 크기를 정합니다. $im2 = imagecreatefromgif( "intro.gif" ); $white = ImageColorAllocate ( $im , 255, 255, 255); // 사용할 색상 설정 $gray = ImageColorAllocate( $im ,200,200,200); // 사용할 색상 설정 ImageCopyMerge ( $im , $im2 , 0, 0, 0, 0, 271,131,100); ImageRectangle( $im ,0,0,270,130, $gray ); ImageTTFText( $im ,10,0,5,128, $gray , "fonts/H2SA1M.TTF" , "Create By Wizard." ); ImagePNG( $im ); ImageDestroy( $im ); // 이미지에 사용한 메모리 제거 ?> |
1과 똑같은데 $im2 즉, gif 파일읽어오는 부분이 흰색 Alloc 해주기전에 있다는것과 ImageCopyMerge를 해줬다는것.. 맨뒤에 100 이란 숫자가 있는데 이것은 투명도라고 생각하면 될것 같다.
[2의 실행예]
[2의 intro.gif 그림파일]
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5