1说明: 1。1python联合PIL的一套代码,可以制作5种宫格图片:四宫格,九宫格,十六宫格,二十五宫格,三十六宫格图片。 1。2思路读取一张图片,发现大小为1200800,那么先填充为一个12001200的正方形,缺少部分用白色填充。 1。3再进行剪接和拼接,中间设置空白的间隙,形成一张宫格图片。 1。4原图来自今日头条正版免费图库,请看效果图,为了欣赏图片,采用不同的照片来切割,顺带欣赏。 2效果图: 22,四宫格 33,九宫格 44,十六宫格 55,二十五宫格 66,三十六宫格 3代码:coding:utf8fromPILimportImage填充为正方形deffillimage(image):width,heightimage。size选取长和宽中较大值作为新图片的newimagelengthwidthifwidthheightelseheight生成新图片〔白底〕newimageImage。new(image。mode,(newimagelength,newimagelength),colorwhite)将之前的图粘贴在新图上,居中ifwidthheight:原图宽大于高,则填充图片的竖直维度(x,y)二元组表示粘贴上图相对下图的起始位置,是个坐标点。newimage。paste(image,(0,int((newimagelengthheight)2)))else:newimage。paste(image,(int((newimagelengthwidth)2),0))returnnewimage宫格函数defpicpuzzle(sroucefile,outfile,gapwidth,gapcolor,xnum,ynum,mode):im0Image。open(sroucefile)print(im0。size)(1200,800)除不尽imfillimage(im0)调用函数填充为正方形print(im。size)(1200,1200)发现可以被2,3,4,5,6整除,所以就可以制作它们倍数的宫格图片im1Image。new(mode,(im。size〔0〕gapwidth(xnum1),im。size〔1〕gapwidth(ynum1)400),gapcolor)foriinrange(0,xnum):forjinrange(0,ynum):simim。crop((iim。size〔0〕xnum,jim。size〔1〕ynum,(i1)im。size〔0〕xnum,(j1)im。size〔1〕ynum))im1。paste(sim,tuple(map(int,(i(im。size〔0〕xnumgapwidth),j(im。size〔1〕ynumgapwidth),i(im。size〔0〕xnumgapwidth)im。size〔0〕xnum,j(im。size〔1〕ynumgapwidth)im。size〔1〕ynum))))im1。save(outfile)ifnamemain:原图路径,生成宫格图路径,间隙大小,白色填充picpuzzle(Sudoku3。jpeg,Sudokuout。jpeg,10,white,6,6,RGB)