利用Python Pillow库生成九宫格图片

火影  金牌会员 | 2024-10-27 23:41:41 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 648|帖子 648|积分 1944

相信很多人看到过九宫格图片,一张完备的大图被分割成九张小图,在朋友圈和微博里一度成为流行。


相比完备的大图,九宫格图文增添了一丝趣味和精致,也显得更有创意。
制作九宫格图片的工具有很多,下文用Python的PIL库来实现图片的九宫格切分。
切分有以下要求:
1、不管原图尺寸如何,切出来的九张图拼在一起后,需是一张正方形大图
2、尽可能不改变原图的清楚度
3、对切分后的九张图用数字序号命名,方便朋友圈或微博上传
说明下,这个小脚本实用性见仁见智,重要是方便初学者练习语法并建立爱好。
如果你有批量处理图片的需求,那么这个脚本或许对你有很大资助。
  1. '''
  2. 朋友圈九宫格图片制作
  3. 工具库:Pillow
  4. '''
  5. # encoding=utf-8
  6. from PIL import Image
  7. import sys
  8. # 第一步:先将原图填充为正方形
  9. def fill_image(image):
  10.     width, height = image.size
  11.     # 选取原图片长、宽中较大值作为新图片的九宫格半径
  12.     new_image_length = width if width > height else height
  13.     # 生产新图片【白底】
  14.     new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')
  15.     # 将原图粘贴在新图上,位置为居中
  16.     if width > height:
  17.         new_image.paste(image, (0, int((new_image_length - height) / 2)))
  18.     else:
  19.         new_image.paste(image, (int((new_image_length - width) / 2), 0))
  20.     return new_image
  21. # 第二步:将图片切割成九宫格
  22. def cut_image(image):
  23.     width, height = image.size
  24.     # 一行放3张图
  25.     item_width = int(width / 3)
  26.     box_list = []
  27.     for i in range(0, 3):
  28.         for j in range(0, 3):
  29.             box = (j * item_width, i * item_width, (j + 1) * item_width, (i + 1) * item_width)
  30.             box_list.append(box)
  31.     image_list = [image.crop(box) for box in box_list]
  32.     return image_list
  33. # 第三步:保存图片
  34. def save_images(image_list,save_path):
  35.     index = 1
  36.     for image in image_list:
  37.         image.save(save_path +str(index) + '.png', 'PNG')
  38.         index += 1
  39. if __name__ == '__main__':
  40.     file_path = "e:\\图片\\新垣结衣.jpg"
  41.     save_path = "e:\\图片\\九宫格\"
  42.     image = Image.open(file_path)
  43.     image = fill_image(image)
  44.     image_list = cut_image(image)
  45.     save_images(image_list)
  46.     print("{}张图片全部生成".format(len(image_list)))
复制代码
上面不到50行代码,便实现了对图片的九宫格切分。你可以复制代码到本地,只需添加原图和生成图的路径,就能执行代码并得到结果。
我们看下生成好的九张图:


再保存得手机里,发朋友圈时,依次按1~9顺序上传图片即可。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表