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

2021. 4. 3. 00:29카테고리 없음

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

 

bit.ly/3pIrVoN

 

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

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

www.fastcampus.co.kr

 

  1. 사원증 디자인 1천개 한번에 모두 만들기 2(코드)
  2. 수료증 디자인 1천개 한번에 만들기1 (날짜계산)
  3. 수료증 디자인 1천개 한번에 만들기2 (코드)

 

사원증 디자인 코드

 

try:
template = Image.open(template_filename)

except:
template = Image.new("RGBA", (800, 1268), 'white')

 

트라이를 통해 오픈 이미지 ttemplate_filename에 오류가 발생했을때 imgae new를 실행시킨다

 

Xdim, Ydim = template.size

언패킹을 사용해 템플릿 사이즈에 x딤과 y딤을 넣어준다.

 

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

 

로고 파일을 불러온고 로고 사이즈를 확인한다.

 

 

photos = os.listdir(member_photo)
PHOTOS = []
for el in photos:
if el.strip().split(".")[-1] not in "PNG png JPG jpg BMP bmp JPEG jpeg":


continue

 

PHOTOS.append(el)

 

증명 사진 리스트를 불러오고 파일명에 걸려준다.

 

COUNT = 0

 

사원증이 만들어 줄때마다 하나씩 올라간다.

 

new_logo_x = int(Xdim * 0.2)

 

로고에 크기를 가로기준으로 20% 조절한다.

 

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

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

 

로고 사이즈를 비례해서 변경해준다.

 

logo.close()

 

원본이 훼손되는걸 막기위해 닫아준다.

 

template.paste(resized_logo, (int(Xdim * 0.1), int(Ydim * 0.95 - new_logo_y)))

 

페이스트를 활용해 로고와 여백을 추가해준다.

 

resized_logo.close()

 

로고 닫아준다

 

nameFont = ImageFont.truetype("font/gulim.ttc", 70)

 

이름에 사용할 글자크기 폰트

 

smallFont = ImageFont.truetype("font/gulim.ttc", 40)

 

url 글자크기와 폰트

 

infoFont = ImageFont.truetype("font/gulim.ttc", 50)

 

나머지 사용할 폰트와 글자

 

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

 

좌우 여백은 5% 씩으로 오른쪽 기준으로 띄워준다.

 

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

 

드로우를 이용해 글자를 넣어준다.

 

for line in IDs:
splt = line.strip().split(", ")
name = splt[0]
division = splt[3]

csv 파일에 정보를 불러온다


스플릿을 사용해 , 기준으로 분리해주고 스플렛을 통해 0번째 정보인 이름과 세번째 정보인 디바이스를 변수에 넣어준다

 

idcard = template.copy()

 

템플릿을 복제해서 겹치지 않게 사용한다.

 

photo_for_id = Image.open(member_photo + "/" + PHOTOS[COUNT])

 

카운트 변수를 사용해서 순차적으로 사진을 불러온다.

 

photo_for_id = photo_for_id.resize((int(Xdim/2), int(Xdim/2 * (4/3))))

사원증에 사진을 절반으로 조절하고

 

idcard.paste(photo_for_id, (int(Xdim/4), int(Ydim/2 - Xdim/2*(4/3)/2)))

 

사원증에 사진을 정중앙에 위치시킨다.

 

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

 

이름 사이사이에 공백을 넣어주고 마지막 줄에 공백을 슬라이싱으로 없애준다.

 

idcard.save(out_dir + "/" + PHOTOS[COUNT])

 

세이브 함수를 사용해 저장해준다.

 

idcard.close()

 

닫아준다

 

COUNT += 1

template.close()

 

템플릿을 닫아준다.

 

 

수료증 디자인 만들기

 

 

목표

이미지 파일 불러오기 (for)
이미지 인적사항 삽입
이미지 위에 날짜 수여번호 삽입 (imageDraw)

 

 

파이썬 오늘 날짜 계산하기

 

import datetime

In [3]: datetime.datetime.today()

Out[3]: datetime.datetime(2021, 4, 2, 23, 50, 29, 149324)

 

년, 월, 일 , 시, 분, 초

 

In [4]: datetime.datetime.today().date()
Out[4]: datetime.date(2021, 4, 2)

 

In [6]: str(datetime.datetime.today().date())
Out[6]: '2021-04-02'

 

In [10]: today + datetime.timedelta(days=5)
Out[10]: datetime.datetime(2021, 4, 7, 23, 53, 0, 43641)

 

타임 델타를 사용하면 미래에 시간을 구할 수 있다.

 

코드

 

date = str(datetime.datetime.today().date())
date = date.split("-")
DATE = date[0] + "년 " + date[1] + "월 " + date[2] + "일"

데이타임을 사용해서 몇월일을 인덱싱을 통해 나눈다

 

suyeo = "수여번호 : %d-%06d" % (int(DATE[:4]),  COUNT)

%d는 데이터 날짜값 (년도) 가 들어가고 %06d 6자리 중 카운터 값을 뒤쪽에 위치하고 빈자리는 0 으로 채워준다.

 

ex)

import datetime
DATE = "2020년 11월 20일"
COUNT = 12
"수여번호 : %d-%06d" % (int(DATE[:4]), COUNT)
Out[12]: '수여번호 : 2020-000012'
DATE[:4]
Out[14]: '2020'