유료 매크로 프로그램 다운로드
https://autopeak.co.kr
AutoPeak RPA Macro
오토픽 매크로는 복잡한 반복 작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
autopeak.co.kr
#매크로 #메크로 #매크로프로그램 #엔지엠소프트웨어 #엔지엠에디터 #엔지엠플레이어 #비활성매크로 #하드웨어매크로 #기계식매크로 #마우스광클릭 #키보드매크로 #이미지서치 #이미지매치 #블로그 #카페 #인스타그램 #유튜브 #소셜네트워크 #카카오톡 #텔레그램 #자동화
안녕하세요. 엔지엠소프트웨어입니다. 여러분들도 인스타그램(Instagram) SNS를 하시는지는 모르겠지만~ 이미지를 편집하는 일은 단순 노가다성 작업입니다. 반복적인 단순 작업들은 매크로를 만들기가 그렇게 어렵지는 않습니다. 물론, 개발자에게 그렇다는 뜻입니다. 비개발자 또는 일반인이 아이디어는 있을지라도 이걸 프로그래밍으로 구현하기란 쉽지 않은 일입니다. 수백, 수천장의 이미지를 하나씩 처리하는건 비효율적인데요. 이걸 프로그램으로 어떻게 처리하는지 알아보도록 할께요. Visual Studio Code를 실행하세요. 그리고, insert_logo.py 파일을 하나 생성해줍니다. 이미지를 처리하고, 저장하기 위해 아래와 같은 패키지들이 필요합니다.
import os
from PIL import Image
os 패키지는 윈도우 관련 함수들을 제공합니다. 이미지를 저장할 폴더를 만들거나 인스타그램 업로드용 이미지 파일에 로고를 추가하고, 저장할 폴더를 만듭니다. 원본 파일에 덮어쓰지 않아야겠죠? Image 패키지는 이미지를 불러와서 편집하고 저장할 때 사용하는 패키지입니다. 파이썬은 수많은 패키지들을 제공해줍니다. 업무 또는 상황에 맞는 패키지들을 잘 사용하는게 핵심입니다. 아래와 같이 인스타그램에 업로드할 이미지가 들어있는 폴더를 설정하세요. 그리고, 이 이미지들에 추가할 로고 파일 위치도 변수로 선언 해줍니다.
import os
from PIL import Image
# 사진이 저장된 폴더명 위치입니다.
directory = "C:\Users\ngmas\Desktop\instagram"
# 사진에 삽입할 로고 파일의 위치입니다.
logo_filename = "C:\Users\ngmas\Desktop\logo.png"
원본 이미지를 편집하지 않고, 로고가 추가된 새로운 이미지를 만들겁니다. 아래와 같이 로고가 추가된 이미지를 저장할 폴더를 만들어줍니다.
# 결과물을 저장할 폴더를 생성합니다.
out_dir ="C:\Users\ngmas\Desktop\instagram_result"
if out_dir not in os.listdir():
os.mkdir(out_dir)
이미지 파일 목록을 input_files 변수에 저장하고 로고 파일도 불러옵니다. 그리고, 로고 파일의 크기를 logo_x, logo_y 변수에 각각 저장 해줬습니다. 이 변수들은 원본 이미지와 로고를 합칠 때 어떤 비율로 처리할지 계산할 때 사용됩니다. 이건 각각의 취향 부분이라서 적절하게 조정해주시면 좋을거 같네요.
# 폴더의 내용물을 열람해 목록을 생성합니다.
input_files = os.listdir(directory)
# 로고 파일을 불러옵니다.
logo = Image.open(logo_filename)
logo_x, logo_y = logo.size
인스타그램에 업로드할 이미지가 들어있는 폴더의 파일을 하나씩 순차적으로 처리해줍니다. 이런 순차적인 반복 처리는 for를 사용합니다. 혹시라도, 이미지가 아닌 파일이 폴더에 섞여 있는 경우가 있을 수 있습니다. 핸드폰으로 촬영하는 경우 이런일이 잘 없지만, 디지털 카메라를 사용하면 간혹, 리눅스용 임시 파일 또는 정보 파일들이 딸려오는 경우가 있습니다. 에러를 발생시킬만한 요소는 미리 제거 해줍니다.
# input_files에 저장된 파일 이름을 하나씩 처리하기 위해 for 반복기를 사용했습니다.
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
# 로고 파일을 이미지에 맞게 적당히 확대/축소합니다.
if logo_x / Xdim > logo_y / Ydim:
# 로고의 x축 길이를 이미지의 x축 길이의 1/5로 조절합니다.
new_logo_x = int(Xdim/5)
new_logo_y = int(logo_y * (new_logo_x / logo_x))
else:
new_logo_y = int(Ydim / 5)
new_logo_x = int(logo_x * (new_logo_y / logo_y))
# 이미지 크기에 맞게 축소/확대된 로고입니다.
resized_logo = logo.resize((new_logo_x, new_logo_y))
# 입력 받은 사진에 로고를 삽입합니다.
# 여백을 2%정도 주었습니다.
image.paste(resized_logo, (int(Xdim/50), int(Ydim/50)), resized_logo)
# 변경된 이미지를 저장합니다.
image.save(out_dir + "/" + filename)
# 이미지를 닫아 줍니다. (이 부분을 빼먹으면 메모리 릭이 발생합니다.)
image.close()
파이썬 스크립트를 실행하고 결과를 확인 해보세요. 원본 폴더에는 아래와 같이 이미지가 들어 있습니다.
실행한 후 결과는 아래와같이 엔지엠소프트웨어 로고가 삽입된걸 확인할 수 있습니다.
아래는 로고 파일입니다.
간단하죠? 몇줄의 코딩으로 특정 폴더의 수많은 이미지를 간단하게 처리할 수 있습니다.
[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]
[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]
원본 글 보기
https://autopeak.co.kr/bbs/board.php?bo_table=product99
AutoPeak RPA Macro
오토픽 매크로는 복잡한 반복 작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
autopeak.co.kr
댓글