2021. 3. 25. 00:36ㆍ카테고리 없음
패스트캠퍼스 6개월 치 업무를 하루 만에 끝내는 업무자동화 올인원 패키지 Online
인스타그램용 사이즈 변환1 (캔버스 그리기, 오프셋 계산)
인스타그램용 사이즈 변환2 (코드,알고리즘)
사진 1천장 로고 삽입 (코드)
목표
1.이미지 파일 불러오기 (이미지 가로/세로 구분)
2.정사각형으로 사진 바꾸기 (배경색 지정)
3.여백부분에 색 채우기 (캔버스에 원본 사진 넣기)
offest
세로이미지 가로로 변경할때
가로축 x 세로축 y
1/2(y-x) + x + 1/2(y-x)
x offset = 0
y offset = 1/2(y-x)
가로 이미지를 세로로 변경할때
가로축 x 세로축 y
1/2(x-y) + x + 1/2(x-y)
x offset = 1/2(x-y)
y offset = 0
정사각형 캔버스 만들고 색 지정
from PIL import Image
new_Image = Image.new("RGBA","(X,Y),"white")
RGBA 색깔을 표현하는 방식
X,Y 가로 세로축 좌표
마지막은 원하는 색깔
원본사진 캔버스에 붙여넣기
new_image.paste(image, (x_offset, y_offset))
paste 사용
가로이미지 세로 이미지 구별
Xdim, Ydim = image.size
if Xdim > Ydim:
X축에 길이가 더 길 경우의 계산입니다.
new_size = Xdim
x_offset = 0
y_offset = int((Xdim - Ydim) / 2)
1/2(x-y) 공식을 y오프셋에 그대로 활용
else:
# Y축 길이가 더 길 경우의 계산입니다.
new_size = Ydim
x_offset = int((Ydim - Xdim) / 2)
y_offset = 0
1/2(y-x) 공식을 x오프셋에 그대로 활용
offset 체험
In [1]: from PIL import Image
In [2]: a = Image.open("a.png")
In [3]: a.size
Out[3]: (30, 111)
n [6]: new_Image = Image.new("RGBA",(110,110), "white")
In [7]: new_Image.save("test.png")
In [9]: new_Image.paste(a, (0,0))
페이스트 이용해 a 이미지를 new_Image 붙였다
In [10]: new_Image.save("test.png")
In [11]: x_offset = int((110-30)/2)
In [12]: x_offset
Out[12]: 40
In [13]: new_Image = Image.new("RGBA", (110,110), "white")
In [14]: new_Image.paste(a,(40,0))
In [15]: new_Image.save("test.png")
로고 한번에 붙이기
설계과정
- 이미지 파일 불러오기
- 로고 사이즈 변경 (reseize)
- 로고 이미지 넣기 (paste)
이미지 로고 삽입
image.paste(logo,(x_offset,y_offset),logo)
마지막에 로고를 한번 더 붙여 투명도를 유지해준다