코딩

AI로 만든 명함 만들기 파이썬 사용

poptaek 2024. 6. 1. 08:03
728x90
반응형

 

안녕하세요 

 

오늘은 Chat GPT를 사용해서 간단하게 명함을 만드는 프로그램을 

 

만들어 달라고 한 후에 잘 실행이 되는가 확인을 해보도록 하겠습니다

 

아래 있는 코드를 만들어 주었습니다.

 

우선 실행을 하기 앞써

 

CMD창에서

 

pip install pandas Pillow

 

위 내용과 같은 것을 입력을 해준 후 설치를 진행을 해줍니다.

 

자세히 보니 어떻한 함수 인지 친절하게 만들어 주었군요 그럼 같이 보시죠

 

별 표시에 있는 부연 설명을 지우셔야 합니다.

 

import pandas as pd
from PIL import Image, ImageDraw, ImageFont

# 엑셀 파일에서 명함 정보를 읽어오는 함수
def read_from_excel(filename="business_cards.xlsx"):
    df = pd.read_excel(filename)
    cards = df.to_dict(orient='records')
    return cards

 

*만들어 놓은 절대경로(파이썬이 있는 폴더 안에) business_cards.xlsx란 파일이 필요하겠습니다.

이것이 없으면 notfound에러가 나옵니다.

*파일을 만드시고 그 안에 내용을 입력을 해주셔야 하는데 그 내용을 밑에서 보시죠~~!


# 명함 정보를 엑셀로 저장하는 함수
def save_to_excel(cards, filename="business_cards.xlsx"):
    df = pd.DataFrame(cards)
    df.to_excel(filename, index=False)
    print(f"명함 정보가 '{filename}' 파일로 저장되었습니다.")

 

*여기는 엑셀 안에 있는 데이터를 저장해주는 내용입니다.

# 명함을 이미지로 생성하는 함수
def create_business_card_image(info, logo_path=None):
    card_width, card_height = 600, 350
    background_color = (255, 255, 255)
    font_color = (0, 0, 0)
    
    image = Image.new('RGB', (card_width, card_height), background_color)
    draw = ImageDraw.Draw(image)
    
    # 윈도우 기본 폰트 경로 설정
    font_path = "C:/Windows/Fonts/arial.ttf"
    font = ImageFont.truetype(font_path, 24)
    small_font = ImageFont.truetype(font_path, 18)
    
    draw.text((20, 50), f"Name: {info['Name']}", font=font, fill=font_color)
    draw.text((20, 100), f"Title: {info['Title']}", font=small_font, fill=font_color)
    draw.text((20, 150), f"Company: {info['Company']}", font=small_font, fill=font_color)
    draw.text((20, 200), f"Email: {info['Email']}", font=small_font, fill=font_color)
    draw.text((20, 250), f"Phone: {info['Phone']}", font=small_font, fill=font_color)

 

*위 def save_to_excel(cards, filename="business_cards.xlsx"): 에서 엑셀을 저장을 할 때 넣어야 하는 형식이 있는데

바로 위 내용에 NAME으로 만들어야 한다는 겁니다.

 

 

     
    # 로고 추가
    if logo_path:
        logo = Image.open(logo_path).convert("RGBA")  # 로고 이미지를 RGBA 형식으로 변환
        logo = logo.resize((100, 100))  # 로고 크기 조절
        image.paste(logo, (450, 20), logo)  # 투명도 유지하며 이미지에 로고 추가
    
    filename = f"{info['Name'].replace(' ', '_')}_business_card.png"
    image.save(filename)
    print(f"명함 이미지가 '{filename}' 파일로 저장되었습니다.")

 

*로고 이미지도 적당한 것을 골라서 파이썬에 있는 위치에 넣어주시면 되는데

이름을 logo.png로 하셔도 되고 이름을 바꾸셔도 되는데 바꾼이름과 똑같이 기입을 해주셔야합니다.


# 엑셀 파일에서 명함 정보를 읽어옴
cards = read_from_excel("business_cards.xlsx")

# 명함 정보를 엑셀로 저장 (필요 시 사용)
# save_to_excel(cards)

# 예시 명함 하나를 이미지로 생성
if cards:
    for card in cards:
        create_business_card_image(card, logo_path="logo.png")  # 로고 파일 경로 지정
else:
    print("엑셀 파일에 명함 정보가 없습니다.")

 

위 내용에 오류가 없으면 정상적으로 실행이 되는데~~!

 

실행을 하면 위 사진과 같이 실행이 됩니다.~~!

 

https://github.com/poptaek/python-code

 

GitHub - poptaek/python-code

Contribute to poptaek/python-code development by creating an account on GitHub.

github.com

 

위 소스 코드는 github에 올려 있으니 필요하시면 다운받아서 사용하시길 바랍니다.

 
이름은 usiness Card Make.py 입니다