반응형
[Python] PIL 이미지 Text 생성 가운데 정렬
Python 에서 PIL을 사용하여 이미지를 생성하고 Text를 가운데 정렬하여 추가하는 소스 입니다.
티몬 몬소리체를 사용하였습니다.
사용할 폰트위치를 지정하여 사용할 수 있습니다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# -*- coding: utf-8 -*-
from PIL import Image, ImageDraw, ImageFont
import textwrap
# IMAGE 기본 설정
var_max_w = 500
var_max_h = 500
var_anchor = "mm" # middle, middle
var_font = ImageFont.truetype("TmonMonsori.ttf", 80)
var_font_color = "#FFFFFF"
var_back_color = "#2F5597"
var_stroke_width = 0
var_stroke_color = "#FFFFFF"
# 이미지 생성
var_img = Image.new(mode="RGB", size=(var_max_w, var_max_h), color=var_back_color)
var_draw = ImageDraw.Draw(var_img)
#var_draw.line(((0, 250), (500, 250)), "gray")
#var_draw.line(((250, 0), (250, 500)), "gray")
# TITLE 기본 설정
var_title = "Python PIL 이미지 Text 생성"
var_title_width_length = 7 # 한 라인의 Max 글자 수
var_pad = 10 # 글 간격
var_title_wrap = textwrap.wrap(var_title, width=var_title_width_length)
var_len_line = len(var_title_wrap)
var_x_point = var_max_w / 2 # 글자를 출력할 x 축 Point : 가운데 정렬이므로 나누기 2 함
var_y_point = var_max_h / 2 # 글자를 출력할 y 축 Point : 가운데 정렬로 아래에서 계산 함
#print("라인 수 : "+str(var_len_line))
# 글자 사이즈
#var_textsize_w, var_textsize_h = var_draw.textsize(var_title_wrap[0], font=var_font)
var_textsize_h = var_draw.textsize(var_title_wrap[0], font=var_font)[1]
# 글자 기준 y Point 계산
var_y_point = var_y_point - (((var_textsize_h * var_len_line) + (var_pad * (var_len_line - 1))) / 2) + (var_textsize_h / 2)
#print("var_textsize_h : "+str(var_textsize_h))
# 라인별로 글자 출력
for var_line in var_title_wrap:
#print("var_y_point : "+str(var_y_point))
# 이미지에 텍스트 출력
var_draw.text((var_x_point, var_y_point)
, var_line
, var_font_color
, anchor=var_anchor
, font=var_font
, stroke_width=var_stroke_width
, stroke_fill=var_stroke_color)
# 글자 height 추가
var_y_point = var_y_point + var_textsize_h + var_pad
# 이미지 저장
var_img.save("new.png")
# 이미지 보이기
var_img.show()
|
cs |
반응형
'Program > Language' 카테고리의 다른 글
shivers 뜻과 사용법 (0) | 2024.11.20 |
---|---|
[Python] FIFO Queue Python 예제 (0) | 2024.11.16 |
[Python] 코딩 스타일 가이드 #1 (0) | 2021.02.10 |
[C#] 쿠팡파트너스 API 사용 예제 search (0) | 2020.12.29 |
[Python] 네이버 번역 API 예제 (0) | 2020.12.03 |
댓글