2021. 3. 26. 00:18ㆍ카테고리 없음
패스트캠퍼스 6개월 치 업무를 하루 만에 끝내는 업무자동화 올인원 패키지 Online
사진 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")