>백엔드 개발 >PHP 튜토리얼 >포토샵 cs2 v9.0 녹색 중국어 버전 php 이미지 함수 예제(원본이 아님)

포토샵 cs2 v9.0 녹색 중국어 버전 php 이미지 함수 예제(원본이 아님)

WBOY
WBOY원래의
2016-07-29 08:40:051142검색

다음 메소드는 메소드입니다:
if(!function_exists('imagecreate')) {
die('이 서버는 GD 모듈을 지원하지 않습니다')
}
지원되지 않는 경우, 어떻게 구성하나요? gd 모듈의 dll 파일을 다운로드하고 php.ini를 수정한 후 서버를 다시 시작하세요.
이하 PHP 드로잉은 PS입니다.
PS를 사용하려면 다음을 완료해야 합니다.
1: 기본 PS 개체를 만들고($image라고 가정) 배경을 채우고(기본적으로 검은색) 모든 후속 PS 작업은 이 배경 이미지를 기반으로 합니다. 2: $image에 그림을 그립니다.
3: 이 이미지를 출력합니다.
4: 객체를 삭제하고 사용한 메모리를 지웁니다.
먼저 자주 사용되는 몇 가지 기능을 알아 보겠습니다. PHP 매뉴얼에 자세히 소개되어 있으며 일반적으로 여기에 인용되어 있습니다.
resource imagecreate ( int x_size, int y_size )
imagecreate()는 x_size 및 y_size 크기의 빈 이미지를 나타내는 이미지 식별자를 반환합니다.
이 함수는 기본적으로 imagetruecolor($width,$height)와 동일합니다.
--------------- ----- -------------
int imagecolorallocate ( 리소스 이미지, int red, int green, int blue )
imagecolorallocate() 지정된 RGB 구성 요소로 구성된 색상을 나타내는 식별자를 반환합니다. image 매개변수는 imagecreatetruecolor() 함수의 반환 값입니다. 빨간색, 녹색, 파란색은 각각 원하는 색상의 빨간색, 녹색, 파란색 구성 요소입니다. 이러한 매개변수는 0~255의 정수 또는 16진수 0x00~0xFF입니다. image로 표현되는 이미지에 사용되는 각 색상을 생성하려면 imagecolorallocate()를 호출해야 합니다.
---------------------------------- -- ----------
bool imagefill (resource image, int x, int y, int color )
imagefill() 이미지의 x, y 좌표(왼쪽 상단) 이미지의 0, 0 )은 색상 색상으로 영역 채우기를 수행하는 데 사용됩니다(즉, x, y 지점과 동일한 색상의 포인트와 인접한 포인트가 채워집니다).
---------------------------------- -- ----------
bool imageline(resource image, int x1, int y1, int x2, int y2, int color )
imageline()은 좌표에서 이미지 이미지의 색상 색상을 사용합니다. x1 , y1 ~ x2, y2 (이미지의 왼쪽 상단은 0, 0) 선분을 그립니다.
---------------------------------- -- ----------
bool imagestring (resource image, intfont, int x, int y, string s, int col )
imagestring()은 col 색상을 사용하여 문자열 s를 그립니다. image 표현된 이미지의 x, y 좌표입니다. (이것은 문자열의 왼쪽 상단 좌표이며, 전체 이미지의 왼쪽 상단은 0, 0입니다.) 글꼴이 1, 2, 3, 4, 5이면 내장 글꼴이 사용됩니다.
---------------------------------- -- ----------
array imagettftext ( 리소스 이미지, 부동 크기, 부동 각도, int x, int y, int color, 문자열 글꼴 파일, 문자열 텍스트 )
이 함수가 더 중요합니다. , 그리고 매개변수가 더 작기 때문에 여기에 나열하지 않습니다. 주로 이미지에 텍스트를 씁니다. 이는 위 기능과 유사하지만 이전보다 더 강력합니다.
------ ------------- -----------
bool imagefilltoborder (resource image, int x, int y, int border, int color )
imagefilltoborder() x, y(이미지의 왼쪽 상단은 0, 0) 지점에서 시작하여 수행 영역 색상 테두리가 있는 경계선에 도달할 때까지 색상 색상을 채웁니다. [참고: 테두리 내의 모든 색상이 채워집니다. 지정된 테두리 색상이 점과 동일한 경우 채우기가 없습니다. 이미지에 테두리 색상이 없으면 전체 이미지가 채워집니다. ]
---------------------------------- --- --
bool imagefilledellipse (resource image, int cx, int cy, int w, int h, int color )
imagefilledellipse() image로 표현되는 이미지에서는 cx, cy(왼쪽 상단)를 사용 이미지의 모서리는 0, 0) 중심이 되는 타원을 그립니다. w와 h는 각각 타원의 너비와 높이를 지정합니다. 타원은 색상으로 채워집니다. 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.
============================================= === ==
출력 이미지 데이터: imagepng($image[,$filename])
========================= === ==========================
예제 1: 파란색 배경에 흰색 선이 교차된 그래픽 출력
< ?php
$width=35;
$height=35;
//객체 생성
$image=imagecreate($width,$height)//색상 추출
$color_white= imagecolorallocate($image,255,255,255);//흰색
$color_blue=imagecolorallocate($image,0,0,108);//파란색
imagefill($image,0,0,$color_blue); 🎜> //그리기
//선 너비
imagesetthickness($image,3)
imageline($image,0,0,$width,$height,$color_white)
imageline( $ image,$width,0,0,$height,$color_white);
//헤더로 개체 보내기
header('content-type:image/png')
imagepng($ image);
/*
//파일로 개체 보내기
$filename="ex1.png"
imagepng($image,$filename)
*/
/ /객체 삭제
imagedestroy($image);
?>
출력 이미지:
온라인 데모: http://www.phzzy.org/temp/5do8/ex1.php
예시 2: 음양 다이어그램
$width=400;
$height=400;
$image=imagecreatetruecolor($width,$height)// 색상 추출
$color_black=imagecolorallocate($image,0,2,0);//
$color_white=imagecolorallocate($image,255,255,255);//흰색
$color_blue=imagecolorallocate($image, 0,0,108); //파란색
$color_red=imagecolorallocate($image,151,0,4);//빨간색
$color_my=imagecolorallocate($image,192,192,255);//배경
$ color_temp=imagecolorallocate( $image,199,199,199);//배경
//이미지
imagefill($image,0,0,$color_white)
//첫 번째는 큰 원입니다
imagefilledarc ($image, $width/2,$height/2,$height,$height,0,360,$color_blue,IMG_ARC_PIE)
//두 개의 작은 원
imagefilledellipse ($image,$width/2, $height/4 ,$height/2,$height/2,$color_red)
imagefilledellipse ($image,$width/2,$height/4 * 3,$height/2,$height/2,$ color_blue);
/*imagefilledellipse -- 타원을 그리고 채우기*/
imagefilledarc ($image,$width/2,$height/2,$height,$height,-90,90,$color_red ,IMG_ARC_PIE);
imagefilledellipse ($image,$width/2,$height/4 * 3,$height/2,$height/2,$color_blue)
//객체를 헤더로 보내기
header('content- type:image/png');
imagepng($image);
/*
//객체를 파일로 보내기
$filename="ex1.png";
imagepng($image ,$filename);
*/
//객체 삭제
imagedestroy($image)
?> //www.phzzy.org/ temp/5do8/ex2.php
예 3: 3D 이미지 --cool
$width=400
$height=400; 🎜>$image = imagecreatetruecolor($ width, $height);
$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)
imagefill($image,0, 0,$white);
// 3D 효과 만들기
for ($i = $height /2 20; $i > $height /2; $i--) {
imagefilledarc($ image, $width/2, $ i, $width/2, $height /2, 0, 45, $darknavy, IMG_ARC_PIE)
imagefilledarc($image, $width/2, $i, $width/2 , $height /2, 45, 75, $darkgray, IMG_ARC_PIE)
imagefilledarc($image, $width/2, $i, $width/2, $height /2, 75, 360, $darkred, IMG_ARC_PIE );
}
imagefilledarc($image, $width/2, $height /2, $width/2, $height /2, 0, 45, $navy, IMG_ARC_PIE)
imagefilledarc($image, $width/2 , $height /2, $width/2, $height /2, 45, 75 , $gray, IMG_ARC_PIE)
imagefilledarc($image, $width/2, $height /2, $width/2, $ height /2, 75, 360 , $red, IMG_ARC_PIE);
// 이미지 삭제
header('Content-type: image/png')
imagepng($image)
imagedestroy ($image);/*
//파일로 개체 보내기
$filename="ex1.png"
imagepng($image,$filename)
*/
?>
출력:
데모: http://www.phzzy.org/temp/5do8/ex3.php
예 4: 간단한 인증 코드
인증 생성은 매우 쉽습니다. PHP를 사용하면 매우 쉽습니다. 간단한 아이디어는 다음과 같습니다.
임의의 시드를 생성하고 임의의 문자를 추출한 후 그래픽에 연결하고 출력하면 색맹을 방지하기 위해 색상을 무작위로 추출하거나 색상을 맞춤 설정할 수 있습니다. 아래를 살펴보세요:
session_start();
$height=20;
$sourcestrings="0123456789aqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; 이미지 =imagecreate( $width ,$height);
$colorarrs=array(
imagecolorallocate($image,255,255,255),//white
imagecolorallocate($image,0 ,0 , 0)//black
);
unset($sessionval);
imagesetthickness($image,3)
//문자열 수를 무작위로 가져옵니다
$strsize=rand(3,5); >imagefill($image ,0,0,$colorarrs[0])
//이미지에 하나씩 문자열 쓰기
for($i=0;$i<$strsize;$i ){
$i_temp =rand(1,62);
$sessionval .=$sourcestrings[$i_temp]
$f
$y_i = $height/2 $font_size /3; ($image, 5, 1 $i * $width /$strsize,5,$sourcestrings[$i_temp],$fontcolor)
}
//세션에 쓰기,
unset($_SESSION 사용) [' 나중에 확인하기 위해) cjjer'])
$_SESSION['cjjer'] = $sessionval
//노이즈 추가
for($i=0;$i<$width /$height; *2;$i )
{ $i_x=rand(0,$width);
$i_y=rand(0,$height)
$pixelcolor=imagecolorallocate($image,rand(0,255) ,rand(0,255) ,rand(0,255));
imagesetpixel($image,$i_x,$i_y,$pixelcolor)
}
header('content-type:image/png');
imagepng( $image);
imagedestroy($image);
?>
생성된 스타일 데모:
온라인 데모: http://www.phzzy.org/temp/5do8 /ex4_login.php
생성된 사진이 충분히 밝지 않아 많은 사용자가 명확하게 보지 못하는 명백한 문제가 있습니다. 몇 가지 더 밝은 색상을 직접 설정한 후 출력하고 colorarrs 배열을 확장해 보겠습니다. 🎜>$colorarrs =array(
imagecolorallocate($image,255,255,255),
imagecolorallocate($image,0,0,0),
imagecolorallocate($image,0,70,0),
imagecolorallocate($ image,92,0,12),
imagecolorallocate($image,0,0,128),
imagecolorallocate($image,233,10,216)
) 그런 다음 23행을 변경합니다. to (17 라인):
$f
출력:
온라인 데모: http://www.phzzy.org/temp/5do8/ex5_login.php
예 5: 더 크고 멋진 검증 code
PS 이미지는 여전히 상대적으로 작습니다. 때로는 어떤 이유로(개인 사이트는 멋을 위한 것이고, 상업용 사이트는 스타일과 사용자 관심을 끌기 위한 것입니다. Google은 그 이상입니다) 인증 코드가 12개로 제한되지 않습니다. px 제한이 200을 초과하는 경우도 있는데 이는 문제가 되지 않습니다. 이때 한 가지 해결책은 이전에 생성된 작은 이미지를 더 크게 만드는 것입니다. 그렇긴 하지만 충분히 매끄럽게 보이지는 않습니다. 사실, 광대역은 더 이상 가장 중요한 문제가 아닙니다. 다른 것은 말할 것도 없고, 여기에 몇 가지 더 아름다운 생성 방법이 있습니다:
session_start(); ;
$height=100;
if($height < $width /6)
$height=$width / 4
$sourcestrings="0123456789aqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; object
$image=imagecreate($width,$height);
$white=imagecolorallocate($image,255,255,255)
imagefill($image,0,0,$white); /글꼴 라이브러리 로드
$f
putenv('"gdf
$f
$f / 2);
//문자열 가져오기
unset($sessionval);
$strsize =rand(5,8);
for($i=0;$i<$strsize;$i ){
$i_temp=rand(1,62)
$sessionval . =$sourcestrings [$i_temp]
$x_i =$font_size $i *$strsize 1)
$y_i = $height / 2
$angle_i=rand(-120,120) ;
$f
imageTTFText($image,$font_size,$angle_i,$x_i,$y_i,$fontcolor_a,$fontname,$sourcestrings[$i_temp])
}
unset($ _SESSION[' cjjer'])
$_SESSION['cjjer'] = $sessionval;
//기타 포인트 수
for($i=0;$i<$width * $height / 100;$i )
{
$i_x=rand(0,$width)
$i_y=rand(0,$height)
imagesetpixel($image,$i_x,$i_y ,imagecolorallocate($ image,rand(0,255),rand(0,2550),rand(0,255)))
}
//객체 보내기
header('content-type:image/png')
imagepng($image)
imagedestroy($image)
온라인 테스트: http://www.phzzy.org/temp/5do8/ex6_login.php
설명:
우선 너비와 높이, 높이가 너무 높아 작은 글자가 잘 보이지 않습니다. . 무작위로 추출된 문자는 여전히 동일합니다.
$sourcestrings="0123456789aqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
객체를 만들고 흰색으로 채웁니다.
$image=imagecreate($width,$height); >$white=imagecolorallocate($image,255,255, 255 );
imagefill($image,0,0,$white)
그런 다음 코드를 확인하려는 글꼴을 로드합니다.
$f/ /현재 루트 디렉터리로 돌아가서 여기에 글꼴 파일을 복사합니다. 글꼴 파일은 *.ttf 파일입니다.
putenv('"gdf
$f
는 문자의 높이를 정의합니다. 여기서는 제가 설정합니다. 높이를 절반으로 줄입니다:
$f / 2);
변수 지우기, 무작위 생성할 문자 수 설정:
unset($sessionval)
$strsize=rand(5 ,8);
루프, 문자를 하나씩 입력합니다.
이 사이클 문자열을 가져와서 세션을 작성하는 변수 뒤에 추가합니다.
$i_temp=rand(1,62)$ sessionval .=$sourcestrings[$i_temp]
이미지에 쓰여진 문자 가져오기(x 및 y 좌표)
$x_i =$font_size $i *$width / ($strsize 1); >$y_i = $height / 2;
정면에서 기울기를 설정합니다.
$angle_i=rand(-120,120)
색상을 무작위로 생성합니다.
$f
쓰기
imageTTFText($image,$font_size,$angle_i, $x_i,$y_i,$fontcolor_a,$fontname,$sourcestrings[$i_temp])
이 기능에 대해 질문이 있으시면 관련 정보를 확인하는 것은 매우 쉽습니다.
세션에 작성하고 등록 코드를 사용하세요.
unset($_SESSION['cjjer'])
$_SESSION['cjjer'] = $ sessionval;
노이즈 지점 추가:
//노이즈 지점 수
for($ i=0;$i<$width * $height / 100;$i )
{
$ i_x=rand(0,$width);
$i_y=rand(0,$height);
imagesetpixel($image,$i_x,$i_y,imagecolorallocate($image,rand(0,255),rand( 0,2550),랜드(0,255)));
헤더에 출력:
header('content-type:image/png');//이 줄은 png 이미지임을 나타내며 기본적으로 출력될 수 있습니다. 이미지의 헤더 형식이 아님
imagepng( $image);
imagedestroy($image)
자신만의 글꼴 라이브러리를 로드하고 회전 각도를 설정할 수 있습니다. $angle_i=rand(-120,120); 글꼴 높이 $f / 2); 글꼴 색상 $fontcolor_a 및 임의의 숫자 수: $strsize=rand(5,8)
예 6: 사진 워터마크 및 썸네일 생성
전통적인 방식으로 워터마킹 및 썸네일 생성 ASP 페이지는 둘 다 비슷합니다. 번거롭고 일반적으로 다른 구성 요소를 사용합니다. 그러나 예상대로 PHP는 30줄 미만의 프로그램으로 이러한 작업을 수행할 수 있습니다.
$source="my.jpg";
$zoom=0.5;
$str='저는 잘생긴 남자입니다. 당신은 여자인가요?'; imagecreatefromjpeg($source);
$width=imagesx($image);
$height=imagesy($image)
$color_red=imagecolorallocate($image,111,0,0);// 빨간색
$f "//simsun.ttc";
$str=iconv('GB2312','UTF-8',$str)
$f
$angle=25; 🎜>$fromx=$ 너비/5;
$fromy=$height/2;
imagettftext($image,$fontsize,$angle,$fromx,$fromy,$color_red,$font,$str) ;
$width_temp =imagesx($image) * $zoom;
$height_temp=imagesy($image) * $zoom;
$img=imagecreatetruecolor($width_temp,$height_temp)
($img,$image,0,0,0,0,$width_temp, $height_temp,$width,$height)
imagedestroy($image)
$file_zoomname="my_zoom_jpeg.jpg"; 🎜>imagejpeg($img ,$file_zoomname);
imagedestroy($img);
?>
원본 사진:
생성된 jpg 사진:
원본 사진 70K 여기서 gif가 생성되면 파일은 18k 이상이고 png는 76k를 사용하므로 jpeg 형식으로 썸네일을 생성합니다.
코드 분석:
여기서 먼저 몇 가지 매개변수를 설정합니다.
$source= "my.jpg"; //원본 이미지
$zoom=0.5; //확대율
$str='나는 잘생긴 남자야, 너는 여자야?' //워터마크 텍스트 불러오기 원본 이미지(워터마크 없음) 로드 중):
$image=imagecreatefromjpeg($source);
길이 및 너비 크기 가져오기:
$width=imagesx($image)
$height=imagesy ($image);
워터마크 글꼴을 설정합니다. 중국어를 사용하기 때문에 중국어 글꼴 라이브러리를 가져와야 합니다. 그렇지 않으면 쓰여지지 않거나 문자가 깨져서 문자열 인코딩을 변환해야 합니다.
$f "//simsun.ttc";
$str =iconv('GB2312','UTF-8',$str)
시작점, 글꼴 크기, 각도 설정, 문자열 작성 :
$f
$angle=25;
$fromx=$width/5
$fromy=$height/2
imagettftext($image,$fontsize,$angle, $fromx,$fromy,$color_red,$font,$str);
확대/축소 크기 요구 사항에 따라 새 크기 개체를 생성합니다.
$width_temp=imagesx($image) * $zoom; height_temp=imagesy($image) * $zoom;
$img= imagecreatetruecolor($width_temp,$height_temp)
gd 라이브러리의 imagecopyreised로 크기가 자동으로 조정됩니다. 🎜>imagecopyreised ($img,$image,0,0,0,0,$width_temp, $height_temp,$width,$height)
작은 그림과 선명한 개체 생성:
imagedestroy($image);
$file_zoomname="my_zoom_jpeg.jpg";
imagejpeg($img,$ file_zoomname);
imagedestroy($img)
워터마킹의 핵심 기술입니다.
위 내용은 포토샵 cs2 v9.0 그린 중국어 버전의 내용을 포함하여 포토샵 cs2 v9.0 그린 중국어 버전 PHP 이미지 함수(원본 아님)의 큰 예를 소개한 것입니다. PHP에 관심이 있는 친구들에게 도움이 되길 바랍니다. 튜토리얼.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.