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

2021. 3. 26. 00:18카테고리 없음

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

 

bit.ly/3pIrVoN

 

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

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

www.fastcampus.co.kr

 

사진 1천장 한번 로고 삽입2 (알고리즘 순서도)
명함 디자인 1천 개 한번에 만들기1 (설계과정)
명함 디자인 1천 개 한번에 만들기2 (파이썬 기술)

 

코드 설계

 

directory = sys.argv[1]

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

 

logo_filename = sys.argv[2]

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

 

out_dir ="images_logo"

이미지를 완성한 파일을 생성한다

 

if out_dir not in os.listdir():
os.mkdir(out_dir)

저장할 폴더를 생성한다
만약 아웃딜 변수가 리스트안에
없다면 만들어라

 

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

이미지 파일을 오픈하고 언패킹을 통해
로고 사이즈를 로고 x 와 로고 y 에 저장한다

 

for filename in input_files:

인풋파일스 안에 있는 파일을 파일네임에
하나씩 불러온다

 

exp = filename.strip().split('.')[-1]
if exp not in "JPG jpg JPEG jpeg PNG png BMP bmp":
continue

스트립과 스플릿을 통해 확장자를 구분해준다

 

image = Image.open(directory + "/" + filename)

원본 파일을 불러온다

 

 

Xdim, Ydim = image.size

언패킹을 통해 원본 파일에 사이즈를 x딤과 y딤으로
저장한다

 

if logo_x / Xdim > logo_y / Ydim:

로고 x 분에 xdim의 값이 로고 y와 y딤에 값보다
크다면 해당 부분을 실행시킨다

 

new_logo_x = int(Xdim/5)

원본사진 1/5 크기로 x 값을 줄인다

 

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

뉴로고 x을 로고 x 로 나눠 비율을 뉴로고 x와 맞춰주고 로고 y을 곱해 최종값을 정해준다

 

else:


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

 

만약 위에 값이 반대라면 ydim 기준으로 반대로 구해준다

 

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

 

image.paste(resized_logo, (int(Xdim/50), int(Ydim/50)), resized_logo)

 

리사이즈를 통해 투명도를 유지해준다 양 옆으로 2%씩 여백을 준다

 

image.save(out_dir + "/" + filename)

 

저장한다.

 

 

명함을 한번에 만들기

 

1.명함 규격의 캔버스 만들기 (reseize())

2.캔버스에 로고 넣기 (paste())
3.캔버스에 글자 넣기

 

이미지 글자 삽입하기

 

from PIL import ImageFont
myFont = ImageFont.truetype("font/gulim.ttc",70)

 

굴림체를 가져와서 70 사이즈를 사용하겠다.

 

from PIL import ImageDraw

ImageDraw.Draw(image).text(xy=(x,y), text="글자", font=myFont,fill="black")

이미지를 불러와 좌표 값 글자를 넣고 폰트는 위에 마이폰트를 사용하며 색깔은 블랙으로 지정한다.

 

 

예제

In [2]: from PIL import Image

In [3]: from PIL import ImageFont

In [4]: from PIL import ImageDraw

In [5]: x = 1039

In [6]: y = 697

In [7]: canvas = Image.new("RGBA",(x,y),"white")

In [9]: canvas.save("test.png")

In [10]: nameFont = ImageFont.truetype("font/gulim.ttc", 70)

In [12]: smallFont = ImageFont.truetype("font/gulim.ttc", 40)

In [13]: infoFont = ImageFont.truetype("font/gulim.ttc", 50)

In [14]: ImageDraw.Draw(canvas).text(xy=(0, 0), text="패스트캠퍼스", font=nameF
...: ont, fill="black")

In [15]: canvas.save("test.png")