Initial commit: LogiStream Android WebView App
This commit is contained in:
132
create_ls_logo_icon.py
Normal file
132
create_ls_logo_icon.py
Normal file
@@ -0,0 +1,132 @@
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
import os
|
||||
|
||||
# LS 티라유텍 브랜드 컬러
|
||||
LS_BLUE = (0, 51, 160) # #0033A0
|
||||
LS_RED = (227, 30, 36) # #E31E24
|
||||
WHITE = (255, 255, 255, 0) # 투명
|
||||
|
||||
def create_ls_logo(size):
|
||||
"""LS 티라유텍 로고를 그립니다"""
|
||||
# 투명 배경 이미지 생성
|
||||
img = Image.new('RGBA', (size, size), WHITE)
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
# 폰트 크기 계산
|
||||
font_size = int(size * 0.45)
|
||||
|
||||
# 폰트 로드 시도
|
||||
font = None
|
||||
font_paths = [
|
||||
"C:/Windows/Fonts/arialbd.ttf", # Arial Bold
|
||||
"C:/Windows/Fonts/arial.ttf", # Arial
|
||||
"/System/Library/Fonts/Helvetica.ttc", # Mac
|
||||
"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf" # Linux
|
||||
]
|
||||
|
||||
for font_path in font_paths:
|
||||
try:
|
||||
font = ImageFont.truetype(font_path, font_size)
|
||||
break
|
||||
except:
|
||||
continue
|
||||
|
||||
if font is None:
|
||||
font = ImageFont.load_default()
|
||||
|
||||
# LS 텍스트 그리기
|
||||
text = "LS"
|
||||
|
||||
# 텍스트 바운딩 박스 계산
|
||||
bbox = draw.textbbox((0, 0), text, font=font)
|
||||
text_width = bbox[2] - bbox[0]
|
||||
text_height = bbox[3] - bbox[1]
|
||||
|
||||
# 중앙 위치 계산 (약간 위로)
|
||||
x = (size - text_width) // 2
|
||||
y = (size - text_height) // 2 - int(size * 0.05)
|
||||
|
||||
# LS 텍스트 그리기 (파란색, 굵게)
|
||||
draw.text((x, y), text, fill=LS_BLUE + (255,), font=font)
|
||||
|
||||
# 빨간 포인트 추가 (우측 상단)
|
||||
dot_radius = int(size * 0.06)
|
||||
dot_x = x + text_width + int(size * 0.08)
|
||||
dot_y = y + int(size * 0.1)
|
||||
|
||||
draw.ellipse(
|
||||
[dot_x - dot_radius, dot_y - dot_radius,
|
||||
dot_x + dot_radius, dot_y + dot_radius],
|
||||
fill=LS_RED + (255,)
|
||||
)
|
||||
|
||||
return img
|
||||
|
||||
def create_round_icon(img):
|
||||
"""둥근 아이콘 생성"""
|
||||
size = img.size[0]
|
||||
|
||||
# 둥근 마스크 생성
|
||||
mask = Image.new('L', (size, size), 0)
|
||||
mask_draw = ImageDraw.Draw(mask)
|
||||
mask_draw.ellipse([0, 0, size, size], fill=255)
|
||||
|
||||
# 마스크 적용
|
||||
output = Image.new('RGBA', (size, size), (255, 255, 255, 0))
|
||||
output.paste(img, (0, 0))
|
||||
output.putalpha(mask)
|
||||
|
||||
return output
|
||||
|
||||
# 아이콘 크기 정의
|
||||
sizes = {
|
||||
'mdpi': 48,
|
||||
'hdpi': 72,
|
||||
'xhdpi': 96,
|
||||
'xxhdpi': 144,
|
||||
'xxxhdpi': 192
|
||||
}
|
||||
|
||||
# 디렉토리 생성
|
||||
base_path = 'android/app/src/main/res'
|
||||
print('디렉토리 생성 중...')
|
||||
for density in sizes.keys():
|
||||
dir_path = f'{base_path}/mipmap-{density}'
|
||||
os.makedirs(dir_path, exist_ok=True)
|
||||
|
||||
print('')
|
||||
print('LS 티라유텍 로고 아이콘 생성 중...')
|
||||
print('')
|
||||
|
||||
# 각 크기별 아이콘 생성
|
||||
for density, size in sizes.items():
|
||||
print(f'생성 중: mipmap-{density} ({size}x{size})')
|
||||
|
||||
# 로고 생성
|
||||
logo = create_ls_logo(size)
|
||||
|
||||
# 일반 아이콘 저장
|
||||
logo.save(f'{base_path}/mipmap-{density}/ic_launcher.png', 'PNG')
|
||||
|
||||
# 둥근 아이콘 생성 및 저장
|
||||
round_logo = create_round_icon(logo)
|
||||
round_logo.save(f'{base_path}/mipmap-{density}/ic_launcher_round.png', 'PNG')
|
||||
|
||||
print('')
|
||||
print('=' * 50)
|
||||
print('✓ LS 티라유텍 로고 아이콘 생성 완료!')
|
||||
print('=' * 50)
|
||||
print('')
|
||||
print('생성된 파일:')
|
||||
for density in sizes.keys():
|
||||
print(f' ✓ mipmap-{density}/ic_launcher.png')
|
||||
print(f' ✓ mipmap-{density}/ic_launcher_round.png')
|
||||
|
||||
print('')
|
||||
print('다음 단계:')
|
||||
print(' 1. Java 환경 변수 설정 (JAVA_HOME)')
|
||||
print(' 2. cd android')
|
||||
print(' 3. .\\gradlew.bat assembleDebug')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user