[패스트캠퍼스 수강후기] 업무자동화강의 100% 환급 챌린지 13회차 미션

2021. 3. 30. 00:35카테고리 없음

패스트캠퍼스 6개월 치 업무를 하루 만에 끝내는 업무자동화 올인원 패키지 Online

 

bit.ly/3pIrVoN

 

6개월 치 업무를 하루 만에 끝내는 업무자동화 | 패스트캠퍼스

대한민국 직장인, 개인 사업자 여러분! 오늘도 귀찮은 반복 업무에 스트레스 받으셨나요? 6개월 치 업무를 하루 만에 끝낸 '카이스트 공익'이 여러분의 칼퇴를 도와 드립니다! 여러 정부기관과

www.fastcampus.co.kr

 

  1. 명함디자인 1천개 한번에 만들기 - 코드1
  2. 명함디자인 1천개 한번에 만들기 - 코드2
  3. 사원증 디자인 1천개 한번 모두 만들기

명함디자인 고정된 부분 만들기

 

import time
import os
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import sys

 

임폴트로 불러온다

 

personal_IDs = sys.argv[1]

 

알그브이로 개인정보명 파일을 입력받는다

 

logo_filename = sys.argv[2]

 

알그브이2를 통해 로고 파일명을 입력받는다

 

location = "서울특별시 강남구 역삼동 강남대로 364 10 11층"


url = "https://bit.ly/2FqKtba"

고정으로 삽입할 주소와 홈페이지 주소

 

out_dir ="namecards"
if out_dir not in os.listdir():
os.mkdir(out_dir)

 

저장 폴더를 만든다

 

logo = Image.open(logo_filename)
logo_x, logo_y = logo.size

 

로고 파일을 불러와 사이즈를 잰다.

 

Xdim = 1039
Ydim = 697

 

최종 완성 파일에 크기

 

new_logo_y = int(Ydim * 0.4)

 

불러온 로고 파일을 전체 크기에 40%로 바꾼다

 

new_logo_x = int(logo_x * (new_logo_y / logo_y))

 

로고x 파일을 로고 y에 비례해 크기를 조절한다.

 

resized_logo = logo.resize((new_logo_x, new_logo_y))

 

리사이즈를 통해 뉴로고 x,y에 사이즈를 저장해준다

 

logo.close()

 

원본파일 보호를 위해 파일을 닫아준다.

 

IDs = open(personal_IDs)

 

인적사항을 펄순 파일에서 불러온다

 

header = IDs.readline()

 

리드라인을 통해 인적사항을 한줄씩 읽어온다

 

image = Image.new("RGBA", (Xdim, Ydim), "white")

 

명함 만들 파일에 사이즈와 색을 지정한다.

 

image.paste(resized_logo, (int(Xdim * 0.1), int(Ydim * 0.1)))

 

로고가 들어갈 상당에는 여백을 가로세로 10% 준다.

 

resized_logo.close()

 

리사이즈 로고 파일을 닫아줌으로써 캐시를 아낄 수 있다.

 

nameFont = ImageFont.truetype("font/gulim.ttc", 70)
smallFont = ImageFont.truetype("font/gulim.ttc", 40)
infoFont = ImageFont.truetype("font/gulim.ttc", 50)

 

 

x_offset = int(Xdim * 0.95 - smallFont.getsize(url)[0])


명함 가로크기에 95%에서 url 길이에 x 축만큼 빼준 값만큼을 여백을 두고 입력한다.

 

y_offset = int(Ydim * 0.05)

 

상단 여백은 5% 을 준다.

 

ImageDraw.Draw(image).text(xy=(x_offset, y_offset), text=url, font=smallFont, fill="black")

 

홈페이지 주소를 드로우를 통해 x오프셋과 y오프셋에 시작지점에 그린다.

 

x_offset = int(Xdim * 0.95 - smallFont.getsize(location)[0])

 

95%를 주소 가로 길이만큼 뻬준 값을 여백을 두고 입력한다.

 

y_offset = int(Ydim * 0.95 - smallFont.getsize(location)[1])

 

95% 주소 길이에 세로 만큼 빼준 값을 두고 입력한다.

 

ImageDraw.Draw(image).text(xy=(x_offset, y_offset), text=location, font=smallFont, fill="black")

 

명함에 사무실 주소를 입력한다 위치는 x오프셋과 y오프셋 조정하고 폰트는 스몰폰트로 글자색상은 블랙으로 입력한다.

 

for line in IDs:

 

아이디스를 한줄씩 불러온다.

splt = line.strip().split(", ")

스트랩을 통해 앞뒤 공백을 없애주고 스플릿을 통해 ,을 기준으로 쪼개준다

 

name = splt[0]
e_mail = splt[2]
division = splt[3]
telephone = splt[4]

 

스플릿을 통해 각 데이터를 쪼개준다

 

namecard = image.copy()

 

원본파일 손상을 방지하기 위해 카피해서 사용한다.

 

temp_name = ""
for el in name:
temp_name += el + " "
name = temp_name[:-1]


템프 네임이라는 빈스트링을 만들어주고 퍼 문을 사용해 네임에 들어간 글자를 하나씩 불러오고 불러온 글자에 el 플러스 공백을 하나씩 준다. 슬라이싱을 이용해 마지막 공백을 제거해준다.

 

 

x_offset = int(Xdim * 0.9 - nameFont.getsize(name)[0])

 

90%에서 네임 가로 글자 크기만큼 공백부터 글자를 입력한다.

 

y_offset = int(Ydim * 0.4 - nameFont.getsize(name)[1])

 

40% 네임 세로 크기를 제거한 공백부터 글자를 입력한다

 

ImageDraw.Draw(namecard).text(xy=(x_offset, y_offset), text=name, font=nameFont, fill="black")

 

x_offset = int(Xdim * 0.9 - infoFont.getsize(division)[0])

y_offset = int(Ydim * 0.5 - infoFont.getsize(division)[1])

 

ImageDraw.Draw(namecard).text(xy=(x_offset, y_offset), text=division, font=infoFont, fill="black")

 

동일한 방법으로 부서명 입력

 

x_offset = int(Xdim * 0.9 - infoFont.getsize(telephone)[0])

y_offset = int(Ydim * 0.65 - infoFont.getsize(telephone)[1])

 

ImageDraw.Draw(namecard).text(xy=(x_offset, y_offset), text=telephone, font=infoFont, fill="black")

 

동일한 방법으로 이름입력

 

x_offset = int(Xdim * 0.9 - infoFont.getsize(e_mail)[0])

y_offset = int(Ydim * 0.75 - infoFont.getsize(e_mail)[1])

ImageDraw.Draw(namecard).text(xy=(x_offset, y_offset), text=e_mail, font=infoFont, fill="black")

 

동일한 방법으로 명함을 입력

 

namecard.save(out_dir + "/" + division + "" + name + "" + telephone + ".png")

 

완성된 명함을 저장한다

 

namecard.close()

 

닫아준다.

 

image.close()

 

바탕 템플릿도 닫아준다

 

 

사원증 제작 자동화하기

  1. 이미지 파일 불러오기(resize())
  2. 이미지 위에 이미지 삽입하기 (paste())
  3. 이미지 글자 삽입