Python 3.6 에서 여러 사진을 옆으로 또는 아래로 붙이는 방법을 확인했다.
OpenCV 기능도 있지만 PIL image 를 사용했다.
인터넷에 설치하는 방법은 나와 있으므로 잘 알아 보시길 바란다.
코드는 아래와 같으며 사진 크기 를 가장 작은 사진을 기준으로 출력 이미지를 원하는 값으로 변경하여 저장함.
사진은 해당 폴터 에서 img 폴더에 있는 사진을 가져 온다. ( 코드 해석하면 읽어올 사진 위치와 저장할 사진위치 나옵니다. )
code ........
'''
Created on 2017. 7. 21.
@author: bsyim
'''
import glob
from PIL import Image
def CalculateSize(files):
size_x=[]
size_y=[]
for file in files:
image =Image.open(file)
size_x.append(image.size[0])
size_y.append(image.size[1])
#print (size_x)
#print (size_y)
x_min = min(size_x)
y_min = min(size_y)
total_x_size = x_min * len(files)
total_y_size = y_min * len(files)
#print("x_min:", x_min)
#print("y_min:", y_min)
#print("total_x_size",total_x_size)
#print("total_y_size",total_y_size)
return x_min,y_min,total_x_size,total_y_size
def ResizeTomin(files,x_min,y_min,x_size,y_size):
file_list=[]
for file in files:
image = Image.open(file)
resized_file = image.resize((x_min,y_min))
file_list.append(resized_file)
#print(resized_file.size)
#resized_file.show()
#resized_file.close()
return file_list, x_size, y_size,x_min, y_min
def ResizeTomax(files,x_min,y_min,x_size,y_size):
file_list=[]
for file in files:
image = Image.open(file)
resized_file = image.resize((x_min,y_min))
file_list.append(resized_file)
#print(resized_file.size)
#resized_file.show()
#resized_file.close()
return file_list, x_size, y_size,x_min, y_min
def ImageMerge(file_list,x_size,y_size,x_min,y_min):
saveImageFileName="PasteImageMerge.jpg"
new_image = Image.new("RGB",(x_size,y_min),(256,256,256))
#print("X_size:", x_size)
#print(len(file_list))
for index in range(len(file_list)):
area=((index * x_min),0,(x_min*(index+1)), y_min)
new_image.paste(file_list[index],area)
#new_image.show()
new_image.save(saveImageFileName,"JPEG",quality=80, optimize=True, progressive=True)
#new_image.save("result.png","PNG")
#new_image.close()
return new_image
#############################################################################
### Paste_Image(files)
### input [list]
### return from PIL import Image
#############################################################################
def Paste_Image(files):
x_min,y_min,x_size,y_size=CalculateSize(files)
file_list,x_size,y_size,x_min,y_min = ResizeTomin(files,x_min,y_min,x_size,y_size)
image=ImageMerge(file_list,x_size,y_size,x_min,y_min)
#image = Image.open(saveImageFileName)
image.show()
#image.close()
return image
#############################################################################
### Main()
#############################################################################
if __name__ == '__main__':
pass
target_dir="./img/"
files=glob.glob(target_dir+"*.*")
#print(len(files))
Paste_Image(files)
'언어 > Python' 카테고리의 다른 글
python openpyxl 사진 추가 하기 소수자리 반올림 방법 (0) | 2017.09.11 |
---|---|
python openpyxl write list to cell (0) | 2017.09.07 |
Python 사진 붙이기 , 옆에 붙이기 , 아래 붙이기 (2) | 2017.08.05 |
Python SCPI Block Data 생성 / 추출 (0) | 2017.08.05 |
Python Excel chart 사용 (0) | 2017.02.22 |