相信很多朋友在发朋友圈的时候都会发一些文字,有的还会附上一张图片,但是普通的图片怎么配得上我们程序员的身份呢??发出来感觉自己没有卡,应该多做些技术工作。今天给大家带来一个项目。这个小项目只需要50行代码就可以实现。它的名字是PIL(Python图像库)。其实这个项目要做的事情很简单。就是把原图剪成9张,一看就会有一张卡脸,就成功霸屏了。那么有朋友会问了,这只是一张正方形的图,那如果我的图很长很宽,切不出来9张,怎么办?其实很简单,就是计算高和宽,然后取最大值即可。比如下面这张Python图片:你可以构造一个正方形的图片。当然,也可以做成这样的图片,非常简单,现在很多手机上的图片处理软件都可以实现。其实这个小程序的开发思路也很简单。用图片给大家康康:对应的代码如下:#-*-coding:utf-8-*-'''把一张图片填成一个正方形,裁成9块图'''fromPILimportImageimportsys#填充图片成正方形deffill_image(image):width,height=image.size#选择长宽较大的值作为新图像new_image_length=widthifwidth>heightelseheight#生成新图像[白色背景]new_image=Image.new(image.mode,(new_image_length,new_image_length),color='white')#将之前的图片粘贴到新的图片上,居中ifwidth>height:#原图的宽度大于高度,然后填充图片的竖向的dimension#(x,y)元组表示粘贴上图相对于下图的起始位置new_image.paste(image,(0,int((new_image_length-height)/2)))else:new_image.paste(image,(int((new_image_length-width)/2),0))returnnew_image#切图defcut_image(image):width,height=image.sizeitem_width=int(width/3)box_list=[]#(left,upper,right,lower)foriinrange(0,3):#双循环,根据原图位置生成9张图forjinrange(0,3):#print((i*item_width,j*item_width,(i+1)*item_width,(j+1)*item_width))box=(j*item_width,i*item_width,(j+1)*item_width,(i+1)*item_width)box_list.append(box)image_list=[image.crop(box)forboxinbox_list]returnimage_list#savedefsave_images(image_list):index=1forimageinimage_list:image.save('./result/python'+str(index)+'.png','PNG')index+=1if__name__=='__main__':file_path=
