defsimple_split(filepackage,size,littlesize):#简单拼接,参数为图片文件名,每行每列的size,小头像图片的大小 row = size[0] col = size[1] bigimg = Image.new('RGBA',(littlesize*row,littlesize*col)) #结果图 number = 0 for i in range(row): #行 for j in range(col): #列 randpic = random.randint(1,friends_count) img = Image.open(filepackage+str(randpic)+'.png').convert('RGBA') img = img.resize((littlesize,littlesize)) loc = (i*littlesize,j*littlesize,(i+1)*littlesize,(j+1)*littlesize) print(loc,number) number+=1 bigimg.paste(img,loc) bigimg.save(resultSavePath)
defsimple_split(filepackage,size,littlesize):#简单拼接,参数为图片文件名,每行每列的size,小头像图片的大小 row = size[0] col = size[1] bigimg = Image.new('RGBA',(littlesize*row,littlesize*col)) number = 0 for i in range(row): for j in range(col): randpic = random.randint(1,friends_count) img = Image.open(filepackage+str(randpic)+'.png').convert('RGBA') img = img.resize((littlesize,littlesize)) loc = (i*littlesize,j*littlesize,(i+1)*littlesize,(j+1)*littlesize) print(loc,number) number+=1 bigimg.paste(img,loc) bigimg.save(resultSavePath)
for i in range(row): for j in range(col): cutbox = (i*littlesize,j*littlesize,(i+1)*littlesize,(j+1)*littlesize) #模板剪切用于对比的某个区域 cutImg = bigImg.crop(cutbox) #复制到cutImg中 tmprgb = meanrbg(cutImg) suitOne = mostSuitImg(tmprgb) + 1#对比出最合适的头像
defmostSuitImg(tmprgb):#进行对比,找出最合适的头像 global all_mean_rgbs minRange = 200000 id = 0 for rgb in
all_mean_rgbs: tmp = (rgb[1][0]-tmprgb[2])**2+(rgb[1][1]-tmprgb[1])**2+(rgb[1][2]-tmprgb[1])**2 if tmp minRange = tmp id = rgb[0] return id
if __name__ == '__main__': # gettouxiang(txtpath) #获取头像,如果已经获取就可以给注释掉了 # simple_split(savepath,(20,20),30) #简单拼接
#模板拼接 for i in range(1,friends_count+1): img = cv.imread(savepath+str(i)+'.png') rgb = meanrbg(img) all_mean_rgbs.append(rgb) all_mean_rgbs = list(enumerate(all_mean_rgbs)) #给列表增加一个索引