반응형
php 그림 (php를 사용한 GD 라이브러리)
1.먼저 네가 이미 GD2함을 설치했는지 검사해 보아라.라이브러리. ---------- php.ini 보기
안 보이면 php.ini 수정하고extension=php_gd2.dll 앞의 세미콜론을 제거하면 OK입니다
//100*30 그림 만들기
$image = imagecreatetruecolor(200,100);
//배경색 설정
$bgcolor = imagecolorallocate($image,0,0,0);
//글꼴 색상 설정
$textcolor = imagecolorallocate($image,255,255,255);
//그림의 왼쪽 상단에 문자열을 쓰다
imagestring($image,20,15,10,"Hello world!",$textcolor);
//출력 이미지
header("Content-type: image/jpeg");
imagejpeg($image);
2.간단한 실례
그림 직접 만들기:
일반적인 절차는 다음과 같습니다.
1: 배경 그림 만들기, 이후의 모든 그림이 배경에 기반하고 있습니다.
2: 배경 그림이나 입력본.
3:최종 도형을 출력합니다.
4:모든 자원을 클리어한다
//그림을 만드는 기본 단계
$values = array(
40,50,
20,240,
60,60,
240,20,
50,40,
10,10,
); //점 좌표를 설정하고, 육각형을 그려서 하나의 배열로 여섯 점의 좌표를 저장한다.
//그림 만들기 250으로 길어진 정사각형 하나인데 함수 사용ImageCreateTrueColor()
$image = imagecreatetruecolor(250,250);
//색상 설정 나중에 쓰도록 하겠습니다
$bgcolor = imagecolorallocate($image,200,200,200);
$blue = imagecolorallocate($image,0,0,255);
//다각형 하나를 그리다 사용함수ImageFilledPolygon() 다음 괄호 안에 있는 파라미터를 믿고 보면 바로 알 수 있습니다,우리가 육각형을 그려야 한다는 거 기억해
imagefilledpolygon($image,$values,6,$blue);
//출력 이미지
header("Content-type:image/png"); //이 함수는 HTTP 헤더 보내기^_^ 반찬은 나도 알아
imagepng($image); //그림% 1개의 캡션을 편집했습니다
imagedestroy($image); //자원을 방출하다
3. 하나의 그림을 배경으로 그림을 그리다
$image = imagecreatefromjpeg("abc.jpg"); //마찬가지로 그림을 그림으로 사용할 수 있습니다. 배경함수명은 상당히 이해하기 쉽습니다(영어만 좋다면 ^_^)
$values = array(
40,50,
20,240,
60,60,
240,20,
50,40,
10,10,
);
$blue = imagecolorallocate($image,0,0,255);
imagefilledpolygon($image,$values,6,$blue);
header("Content-type: image/jpeg");
imagejpeg($image);
imagedestroy($image);
이미지를 출력할 때 imagepng()을 사용했다는 것을 기억하십시오. 우리는 단지 하나의 매개 변수만 추가하면 우리의 이미지를 현재 디렉터리에 저장할 수 있습니다. 구체적인 코드는 다음과 같습니다
//파일에 그림 저장
$img = imagecreatetruecolor(200,200);
$white = imagecolorallocate($img,255,255,255);
$black = imagecolorallocate($img,0,0,0);
imagearc($img,100,100,150,150,0,360,$white);
imagepng($img,"testpng.png"); //우리의 현재 목록 아래에서 testpng.png 사진을 볼 수 있다
imagedestroy($img);
4.RGB 그림의 예:
$size = 300;
$image = imagecreatetruecolor($size,$size);
//흰색 바탕에 검은색 테두리로 사각 테두리 그리기
$back = imagecolorallocate($image,255,255,255);
$border = imagecolorallocate($image,0,0,0);
imagefilledrectangle($image,0,0,$size,$size,$back); //흰색 배경 그리기
imagerectangle($image,0,0,$size-1,$size-1,$border); //검은 테두리를 그리다
$yellow_x = 150;
$yellow_y = 75;
$red_x = 100;
$red_y = 160;
$blue_x = 200;
$blue_y = 160;
$radius = 150;
$yellow = imagecolorallocatealpha($image,255,255,0,75); //이 함수는 노란색 알파 값을 75로 하면 투명도가 됩니다
$red = imagecolorallocatealpha($image,255,0,0,75);
$blue = imagecolorallocatealpha($image,0,0,255,75);
//세 개가 겹쳐진 원을 그리다
imagefilledellipse($image,$yellow_x,$yellow_y,$radius,$radius,$yellow); //이 함수는 바로 내가 $image에 원심을 그릴 것이다($yellow_x,$yellow_y)반지름 $radius/2색상 $yellow의 원
imagefilledellipse($image,$red_x,$red_y,$radius,$radius,$red);
imagefilledellipse($image,$blue_x,$blue_y,$radius,$radius,$blue);
//올바른 header 출력
header("Content-type: image/png");
//결과를 출력하다
imagepng($image);
imagedestroy($image);
픽셀 값 가져오기
//픽셀 색상 가져오기
$image = imagecreatefromjpeg("abc.jpg");
$rgb = imagecolorat($image,100,100);
$r = ($rgb>>16) & 0xFF;
$g = ($rgb>>8) & 0xFF;
$b = ($rgb) & 0xFF;
echo "红:$r 绿:$g 파랗다:$b";
5. 3D 효과의 손잡이 그림:
$image = imagecreatetruecolor(100,100);
//색상을 설정한 후 백업하면 변수 이름에서 어떤 색상인지 알 수 있습니다.
$white = imagecolorallocate($image,0xFF,0xFF,0xFF);
$gray = imagecolorallocate($image,0xC0,0xC0,0xC0);
$darkgray = imagecolorallocate($image,0x90,0x90,0x90);
$navy = imagecolorallocate($image,0x00,0x00,0x80);
$darknavy = imagecolorallocate($image,0x00,0x00,0x50);
$red = imagecolorallocate($image,0xFF,0x00,0x00);
$darkred = imagecolorallocate($image,0x90,0x00,0x00);
//3D 효과 만들기
for ($i = 60;$i > 50;$i--){
imagefilledarc($image,50,$i,100,50,0,45,$darknavy,IMG_ARC_PIE); //저는 $image에 동그라미 쳐야 돼요(50,$i)가로 100 세로 50,0 (3시 위치) - 45도, 색상은 darknavy의 타원, 마지막 파라미터는 알 수 없습니다
imagefilledarc($image,50,$i,100,50,45,75,$darkgray,IMG_ARC_PIE);
imagefilledarc($image,50,$i,100,50,75,360,$darkred,IMG_ARC_PIE);
} //여기서 for 루프는 병상도를 높게 구현한 것으로 백분율 구현은 다음과 같다
imagefilledarc($image,50,50,100,50,0,45,$navy,IMG_ARC_PIE);
imagefilledarc($image,50,50,100,50,45,75,$gray,IMG_ARC_PIE);
imagefilledarc($image,50,50,100,50,75,360,$red,IMG_ARC_PIE);
//출력 이미지
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);
6. 캔버스 투명 배경색 처리
<?PHP
/*
*$sourePic:원본 경로
* $smallFileName:작은 그림 이름
* $width:작은 그림 너비
* $heigh:소도가 높다
* 전재명기 www.hzhuti.com */
function pngthumb($sourePic,$smallFileName,$width,$heigh){
$image=imagecreatefrompng($sourePic);//PNG
imagesavealpha($image,true);//여기서 중요한 것은 $sourePic 이미지의 투명한 색을 잃지 말라는 뜻입니다;
$BigWidth=imagesx($image);//큰 그림 너비
$BigHeigh=imagesy($image);//큰 그림 높이
$thumb = imagecreatetruecolor($width,$heigh);
imagealphablending($thumb,false);//여기서 중요한 것은 색을 병합하지 않고 투명색을 포함한 $img 이미지 색상으로 직접 교체한다는 것이다;
imagesavealpha($thumb,true);//$thumb 이미지의 투명한 색을 잃지 않는 것이 중요합니다;
if(imagecopyresampled($thumb,$image,0,0,0,0,$width,$heigh,$BigWidth,$BigHeigh)){
imagepng($thumb,$smallFileName);}
return $smallFileName;//작은 그림 경로로 돌아가기 }
pngthumb("a.png", "c.png", 300, 300);//호출하다
?>
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php 영문 문자열 길이 계산 (0) | 2022.08.01 |
---|---|
PHP 단순 MVC 아키텍처 (0) | 2022.08.01 |
[PHP 프로젝트 배포 3] Apache 환경 구성 (0) | 2022.07.30 |
[PHP 프로젝트 배치1] PHP 환경 구성 (0) | 2022.07.30 |
[PHP 프로젝트 배치 4] 아파치, PHP, Mysql 통합 (0) | 2022.07.30 |