본문 바로가기
Python

[python] 이미지 내 텍스트 자동 삽입

by 퍼포먼스마케팅코더 2022. 8. 19.
반응형

python 이미지 내 텍스트 자동 삽입

이미지 안에서 동일한 이미지가 있는데 이미지를 안에 텍스트만 집어넣고 계속적으로 바꿔서 써야 될 부분들이 있지 않습니까? 그럴 때 유용하게 쓸 수 있는 코딩입니다. 파이팅 코딩 안에서 이미지 안에서 텍스트를 자동으로 집어넣을 수 있도록 해서 이미지 안에 이 텍스트만 수정을 해서요. 아주 많이 뽑아낼 수 있습니다. 이러한 거를 만들어 놨었고요 많이 쓰일 때가 아무래도 이렇게 이미지 안에서 텍스트만 놓고 동일한 이미지 안에서 그거를 반복적으로 사용했을 때 제가 볼 때 유용하다 싶은 게 섬네일이라든가 이런 거 있지 않습니까?

 

네이버도 될 수도 있고 아니면 유튜브도 될 수 있겠죠. 그럴 때 유용하게 쓸 수 있겠다라는 게 이 코딩인 것 같아요. 밑에 보시면 아시겠지만 키워드를 넣으면요. 키워드가 바로 내용이 다 나옵니다. 키워드에 따라서 이미지 안에 텍스트가 입력이 될 거예요. 근데 이것에 대한 단점이라고 하자면 아무래도 위치라든가 위치나 이미지 크기 이런 것들이 수시로 작업을 해야 되기 때문에 이런 번거로운 부분들은 있습니다. 하지만 그것만 이겨내신다면 유용하지 않을까 싶어서 이렇게 가지고 왔습니다. 이용하게 썼으면 좋겠고요 여기까지입니다.

import os
from PIL import Image, ImageFont, ImageDraw
from IPython.display import display

directory = 'C:/Users/user/Desktop/test/image/' #디렉토리

keywords = ['고인물', '스타크래프트'] #키워드

## 현재 디렉토리에 존재하는 파일들 가져오기: file_li
file_li = os.listdir(directory)
#print(file_li[:5])
 
### file_li중에서 그림파일(.png, .jpg)만 가져오기: image_li
image_li = [i for i in file_li if ('.png' in i) or ('.jpg' in i)]
#print(image_li[:5])
 
### 그림 1개만 예시로 보기: image_li[0]
img_PIL = Image.open(str(directory)  + f"{image_li[0]}")  #디렉토리 수정
#img_PIL.show()    #보기
#display(img_PIL)  # 주피터에서 보기

## ImageDraw.Draw()를 이용해 이미지에 글자쓰기

font = ImageFont.truetype("C:/Users/user/AppData/Local/Microsoft/Windows/Fonts/국립박물관문화재단클래식M.ttf", #폰트위치
                          70) #글꼴크기
file = image_li[0]
file_2 = str(directory) + str(file) 
#print(file_2)
for keyword in keywords :
    img = Image.open(f"{file_2}") #파일위치 열기
    draw = ImageDraw.Draw(img)  #이미지 열기
    subject = str(keyword) +' 해석 해설\n 주제 설명 줄거리 정리'
    draw.text((250, 400), subject, fill='white' , font=font, align='right')
    #draw.text("원하는 글자위치 x좌표","원하는 글자위치 y좌표"),keyword,fill="white",font=selectedFont,align='center') # fill= 속성은 무슨 색으로 채울지 설정,font=는 자신이 설정한 폰트 설정
    draw = ImageDraw.Draw(img)
    #img.save(f"{file_2.split('.')[0]}"+_result+".jpg")
    img.save(f"{file_2.split('.')[0]}_"+str(keyword)+".jpg")

    size = 300,300 # 조절하고자 하는 size 저장 (x축 크기, y축 크기)

    #for file in image_li:
    img = Image.open(f"{file_2.split('.')[0]}_"+str(keyword)+".jpg")
    img.thumbnail(size, Image.ANTIALIAS)
    display(img)

## 이미지에 글자쓴것 주피터로 보기 
#for file in image_li:
#    img_PIL = Image.open(f"{file_2.split('.')[0]}_result.jpg")
    #img_PIL.show()
    #display(img_PIL)
반응형

댓글