2015년 12월 24일 목요일

이미지 합쳐주는 script (python 이용) 낱개의 tile을 하나의 파일로

여러장 낱개의 이미지를 하나의 이미지로 변환하는 스크립트 입니다.

즉, 아래와 같은 타일이미지가 있다면 하나의 형태로 합쳐주는데 여러가지 방식으로 합칠 수 있습니다.


왼쪽은 6개의 이미지를 sizeColumn = 4 일때의 결과이고, 오른쪽은 sizeColumn = 2 일때의 결과 입니다.

소스는 다음과 같습니다.


import Image

""" save file name """
savefilename = "out_new.png" 
""" load file name """
loadfilename = []
loadfilename.append("tile1616_1.png")
loadfilename.append("tile1616_2.png")
loadfilename.append("tile1616_3.png")
loadfilename.append("tile1616_4.png")
loadfilename.append("tile1616_5.png")
loadfilename.append("tile1616_6.png")

""" 컬럼 갯수 """
sizeColumn = 2

image = Image.open(loadfilename[0])
x = image.size[0];
y = image.size[0];
length = len(loadfilename);

newimg=Image.new("RGBA",( int(sizeColumn*(x)) , int((((length-1)/sizeColumn)+1)*(y)) ) )
print "x,y:",x,y,int(sizeColumn),int(((length-1)/sizeColumn)+1),( int(sizeColumn*(x)) , int((((length-1)/sizeColumn)+1)*(y)) )

i = 0;
for j in loadfilename:
 image = Image.open(j)
 box = (0,0,x,y)
 cutting = image.crop(box)
 print "process:",j,(i/sizeColumn),(i%sizeColumn),box,((x)*(i/sizeColumn),(y)*(i%sizeColumn))
 newimg.paste(cutting,((x)*(i%sizeColumn),(y)*(i/sizeColumn)))
 i=i+1;

newimg.save(savefilename,"PNG")

댓글 없음:

댓글 쓰기