Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Math
- C
- web
- BFS
- Python
- udemy
- Algorithm
- dfs
- BASIC
- 따배씨
- greedy
- server
- 백준
- String
- C언어
- php
- programmers
- 따라하면서 배우는 C언어
- DP
- 생활코딩
- BOJ
- Algospot
- 인프런
- 따라하며 배우는 C언어
- Cleancode
- graph
- JavaScript
- sorting
- 종만북
- 정수론
Archives
- Today
- Total
몽상실현개발주의
[생활코딩] 12. 이미지 다루기 본문
생활코딩 php 강좌
12. 이미지 다루기
12.1 GD Lib 소개 및 설치
- php 에서 이미지를 처리하는 기능은 포함되어 있지 않기 때문에, 외부 라이브러리가 필요
- 가장 대표적인 것이 GD Library
- GD Lib 가 포함되 있는 상태로 php 가 설치 되거나, 기본적으로 제공하는 경우가 많음
- 하지만, 기본 제공 프로그램이 아니기 때문에 확인이 필요
- phpinfo 를 통해 GD Lib 설치 여부를 확인 할 수 있음
- 각각의 img file format 의 지원 여부를 확인 가능
- GD Lib 가 설치되어 있지 않은 경우, GD Lib 를 설치 후 php.ini 에 경로를 설정해 주면 됨
12.2 이미지에 글 쓰기 1
// button.php
<?php
header("Content-type: image/png");
$string = $_GET['text'];
$im = imagecreatefrompng("button.png");
$blue = imagecolorallocate($im, 60, 87, 156);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 4, $px, 9, $string, $blue);
imagepng($im);
imagedestroy($im);
?>
- header()
- Content-type: image/png
- server 가 client 로 전송하는 내용은 png image 인것을 browser 에게 전달
- button.php 파일의 결과를 Web Server 로 보여줄때, 작성된 header 기준으로 Server 가 Client 로 전송하는 header 에 포함되어 작성됨
- header 는 php 문서의 가장 상단에 작성 되어야 함
- Content-type: image/png
- $string
- url 에 포함된 text 정보를 저장
- imagecreatefrompng(image file)
- png 형식의 image 를 가져옴
- imagecolorallocate(image, R, G, B)
- image 에 색을 할당
- imagesx(image)
- image 의 가로 길이(폭)
- $px : text 가 이미지 공간 내 가운데 정렬로 쓰여지기 위한 계산값
- imagestring(작성공간, font, x 좌표, y 좌표, text, color )
- image 에 text 를 작성
- imagepng(image)
- png 형식의 image 를 전송
- imagedestroy(image)
- image 파일에 대한 정보를 소거
- http 통신의 응답 결과
- button.php 파일에 작성된 header 기준으로 응답
12.3 이미지에 글 쓰기 2
// button.php
<?php
header("Content-type: image/png");
$string = $_GET['text'];
$im = imagecreatefrompng("button.png");
$orange = imagecolorallocate($im, 60, 87, 156);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 4, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
?>
<html>
<body>
<img src="button.php?text=intro">
<img src="button.php?text=member">
<img src="button.php?text=history">
<img src="button.php?text=mission">
</body>
</html>
- 위의 결과처럼 GD Lib 를 이용하여 php 에서 Image 를 다를 수 있지만, Server 의 resource 를 매우 많이 사용하므로 권장하지 않음
- Image 는 정적인 Image 를 사용하거나, 동적인 결과는 다른 기법을 사용하는게 좋음
- Server 에서 image 를 직접 수정하지 말자
12.4 워터마크 만들기
<?php
$stamp = imagecreatefrompng('text.png');
$im = imagecreatefrompng('original.png');
$margin_right = 10;
$margin_bottom = 10;
$X = imagesx($im) - imagesx($stamp) - $margin_right;
$Y = imagesy($im) - imagesy($stamp) - $margin_bottom;
imagecopy($im, $stamp, $X, $Y, 0, 0, imagesx($stamp), imagesy($stamp));
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
- imagecopy(source, destination, 복사 위치 x 좌표, 복사 위치 y 좌표, source 구간 x, source 구간 y, destination 구간 x, destination 구간 y)
- source : 복사될 image
- destinatin : source 가 덮어질 image
이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.
'Language > php' 카테고리의 다른 글
[생활코딩] 13.2 검색 1 ~ 13.4 검색 3 (0) | 2021.05.18 |
---|---|
[생활코딩] 13.1 정규표현식 소개 (0) | 2021.05.18 |
[생활코딩] 11.5 파일 업로드를 위한 form ~ 11.7 파일 업로드 - 수신 Application (0) | 2021.05.13 |
[생활코딩] 11.1 php 파일 제어 ~ 11.4 디렉토리 제어하기 (0) | 2021.05.13 |
[생활코딩] 10.1 include 와 require ~ 10.2 namespace (0) | 2021.05.12 |
Comments