>  기사  >  백엔드 개발  >  PHP는 코드를 컴파일하여 동적 이미지를 생성합니다.

PHP는 코드를 컴파일하여 동적 이미지를 생성합니다.

PHPz
PHPz원래의
2016-07-29 08:38:5652183검색

기본 이미지 생성 기능을 사용하기 전 GD 라이브러리 파일을 설치해야 합니다. JPEG 관련 이미지 생성 기능을 사용하려면 jpeg-6b도 설치해야 하고, 이미지에 Type 1 글꼴을 사용하려면 t1lib도 설치해야 합니다.

이미지 생성 환경을 설정하기 전, 몇 가지 준비가 필요합니다. 먼저 t1lib를 설치한 다음 jpeg-6b를 설치하고 GD 라이브러리 파일을 설치합니다. 설치 시에는 GD를 컴파일하고 라이브러리에 저장할 때 jpeg-6b를 사용하므로 여기에 제시된 순서대로 설치해야 합니다. jpeg-6b가 설치되어 있지 않으면 컴파일 중에 오류가 발생합니다.

이 세 가지 구성 요소를 설치한 후에도 여전히 PHP를 재구성해야 합니다. 이것이 DSO를 사용하여 PHP를 설치하는 이유 중 하나입니다. make clean을 실행하고 현재 구성에 다음 내용을 추가합니다.

--with-gd=[/path/to/gd] 
--with-jpeg-dir=[/path/to/jpeg-6b] 
--with-t1lib=[/path/to/t1lib]

추가 완료 후 make 명령을 실행한 후 make install 명령을 실행하고 Apache를 다시 시작한 후 phpinfo()를 실행하여 확인합니다. 설정이 적용되었는지 여부가 새로워졌습니다. 이제 이미지 생성 작업을 시작할 수 있습니다.

설치된 GD 라이브러리 파일의 버전에 따라 GIF 또는 PNG 형식의 그래픽 파일을 생성할 수 있는지 여부가 결정됩니다. gd-1.6 이하 버전을 설치하면 GIF 형식 파일은 사용할 수 있지만, PNG 파일은 생성할 수 없습니다. gd-1.6 이상 버전을 설치하면 PNG 파일은 생성 가능하지만 GIF ​​형식 파일은 생성할 수 없습니다.

간단한 이미지를 만들려면 많은 기능을 사용해야 하는데, 이에 대해 단계별로 설명하겠습니다.

다음 예에서는 PNG 형식의 이미지 파일을 생성합니다. 다음 코드는 생성된 이미지의 MIME 유형을 포함하는 헤더입니다.

<? header ("Content-type: image/png");

ImageCreate()를 사용하면 생성됩니다. 빈 이미지를 나타내는 변수입니다. 이 함수에는 이미지 크기(픽셀) 매개변수가 필요합니다. 형식은 ImageCreate(x_size, y_size)입니다. 250×250 크기의 이미지를 생성하려면 다음 명령문을 사용할 수 있습니다.

$newImg = ImageCreate(250,250);

이미지가 아직 비어 있으므로 색상을 채워 넣을 수 있습니다. 먼저 ImageColorAllocate() 함수를 사용하여 RGB 값을 사용하여 이 색상에 이름을 할당해야 합니다. 이 함수의 형식은 ImageColorAllocate([image], [red], [green], [blue])입니다. 하늘색을 정의하려면 다음 명령문을 사용할 수 있습니다.

$skyblue = ImageColorAllocate($newImg,136,193,255);

다음으로 ImageFill() 함수를 사용하여 이미지를 이 색상으로 채워야 합니다. ImageFill() 함수에는 여러 가지가 있습니다. ImageFillRectangle( ), ImageFillPolygon() 등과 같은 버전. 단순화를 위해 ImageFill() 함수를 다음 형식으로 사용합니다.

ImageFill([image], [start x point], [start y point], [color]) 
ImageFill($newImg,0,0,$skyblue);

마지막으로 이미지가 생성된 후 이미지 핸들과 점유된 메모리를 해제합니다.

ImagePNG($newImg); 
ImageDestroy($newImg); ?>

In 이렇게 하면 이미지를 생성하는 전체 코드는 다음과 같습니다.

<? header ("Content-type: image/png"); 
$newImg = ImageCreate(250,250); 
$skyblue = ImageColorAllocate($newImg,136,193,255); 
ImageFill($newImg,0,0,$skyblue); 
ImagePNG($newImg); 
ImageDestroy($newImg); 
?>

이 스크립트 파일을 skyblue.php로 저장하고 브라우저로 접속하면 하늘색 250×250 PNG가 보입니다. 형식 이미지.

이미지 생성 기능을 사용하여 큰 이미지를 작은 이미지로 만드는 등 이미지를 처리할 수도 있습니다.

이미지가 있고 이를 35×35 크기로 자르고 싶다고 가정해 보겠습니다. 사이즈 이미지. 여러분이 해야 할 일은 35×35 빈 이미지를 만들고 원본 이미지가 포함된 이미지 스트림을 만든 다음 원본 이미지의 크기가 조정된 버전을 새 빈 이미지에 배치하는 것뿐입니다.

이 작업을 완료하는 주요 함수는 ImageCopyResize()이며, 여기에는 다음 형식이 필요합니다: ImageCopyReized([새 이미지 핸들],[원본 이미지 핸들],[새 이미지 X], [새 이미지 Y], [원본 이미지 X], [원본 이미지 Y], [새 이미지 X], [새 이미지 Y], [원본 이미지 X], [원본 이미지 Y]).

<? /*发送一个头部,以便让浏览器知道该文件所包含的内容类型*/ 
header("Content-type: image/png"); 
/*建立保存新图像高度和宽度的变量*/ 
$newWidth = 35; 
$newHeight = 35; 
/*建立给定高度和宽度的新的空白图像*/ 
$newImg = ImageCreate($newWidth,$newHeight); 
/*从原来较大的图像中得到数据*/ 
$origImg = ImageCreateFromPNG("test.png"); 
/*拷贝调整大小后的图像,使用ImageSX()、ImageSY()得到原来的图像在X、Y方面上的大小*/ 
ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg)); 
/*创建希望得到的图像,释放内存*/ 
ImagePNG($newImg); 
ImageDestroy($newImg); ?>

이 작은 스크립트를 resize.php로 저장한 후 브라우저로 접속하면 35×35 PNG 형식의 이미지를 볼 수 있습니다.

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