댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
PHP
2014.07.09 16:17
GD 라이브러리 간단
조회 수 11683 댓글 0
먼저 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 이미지를 만들어 보져 =) < ? $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에서 바로 데이타를 뽑아와서 할때는 어쩔거져? ^^?? 하여간 이것가지 생각하시고 하셔야 겠져??? 이제 그려봅시다. < ? $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 이미지 파일 만들기] <? 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 한다.
<? 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 이란 숫자가 있는데 이것은 투명도라고 생각하면 될것 같다. Dreamy의 코드 스크랩내가 모으고 내가 보는
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5