文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于Python如何实现图片一键切割九宫格工具

2023-07-05 14:41

关注

本文小编为大家详细介绍“基于Python如何实现图片一键切割九宫格工具”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于Python如何实现图片一键切割九宫格工具”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

实现代码

""" 1.将一张图片填充为正方形 2.将文字加到方形图片上 3.讲图片切为9张图并存储"""import osfrom tkinter import filedialogfrom PIL import Imagefrom future.moves import tkinter# 填充文字的库import PILfrom PIL import ImageFont,Image,ImageDrawdef open_img():    """    打开图片    :return:    """    root = tkinter.Tk()  # 创建一个Tkinter.Tk()实例    root.withdraw()  # 将Tkinter.Tk()实例隐藏    default_dir = r"文件路径"    file_path = filedialog.askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser(default_dir)))    if len(file_path) != 0:        image = Image.open(file_path)        fill_image(image)    else:        SystemExit()def fill_image(img):    """    将图片填充为正方形    :param img: 图片    :return:    """    width, height = img.size    # 选取长和宽中较大值作为新图片的    new_image_length = width if width > height else height    # 生成新图片[白底]    new_image = Image.new(img.mode, (new_image_length, new_image_length), color='white')    # 将之前的图粘贴在新图上,居中    if width > height:  # 原图宽大于高,则填充图片的竖直维度        # (x,y)二元组表示粘贴上图相对下图的起始位置        new_image.paste(img, (0, int((new_image_length - height) / 2)))    else:        new_image.paste(img, (int((new_image_length - width) / 2), 0))    # 图片上写上文字    # 设置字体,如果没有,也可以不设置    font = ImageFont.truetype(r"C:\Windows\Fonts\STHUPO.TTF", 50)    datas='V:xlzcm88或xlzcm66'    bytedatas=datas.encode('UTF-8')    draw = ImageDraw.Draw(new_image)    draw.text((0,new_image.size[1]/2), u'V:xlzcm88或xlzcm66', font=font)    cut_image(new_image)def cut_image(img):    """    切图    :param img: 填充成方形后的图片    :return:    """    width, height = img.size    item_width = int(width / 3)    box_list = []    for i in range(0, 3):  # 两重循环,生成9张图片基于原图的位置        for j in range(0, 3):            box = (j * item_width, i * item_width, (j + 1) * item_width, (i + 1) * item_width)            box_list.append(box)    img_list = [img.crop(box) for box in box_list]    save_images(img_list)def save_images(img_list):    """    保存切割完成的图片    :param img_list: 切割后的图片列表    :return:    """    index = 1    files_path = 'Pic'    # 若文件夹不存在,则创建    if not os.path.exists(files_path):        os.makedirs(files_path)    for img in img_list:        img.save('./Pic/' + str(index) + '.png', 'PNG')        index += 1    print('完成')if __name__ == '__main__':    open_img()

方法补充

除了上文的方法,小编还给大家整理了其他图片切割成九宫格的方法,希望对大家有所帮助

# -*- coding: utf-8 -*- from PIL import Imageimport sys  # 将图片填充为正方形def fill_image(image):    width, height = image.size    # 选取长和宽中较大值作为新图片的    new_image_length = width if width > height else height    # 生成新图片[白底]    new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')    # 将之前的图粘贴在新图上,居中    if width > height:  # 原图宽大于高,则填充图片的竖直维度        new_image.paste(image, (0, int((new_image_length - height) / 2)))  # (x,y)二元组表示粘贴上图相对下图的起始位置    else:        new_image.paste(image, (int((new_image_length - width) / 2), 0))    return new_image  # 切图def cut_image(image):    width, height = image.size    item_width = int(width / 3)    box_list = []    # (left, upper, right, lower)    for i in range(0, 3):        for j in range(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) for box in box_list]     return image_list  # 保存def save_images(image_list):    index = 1    for image in image_list:        image.save('./output/' + str(index) + '.jpg')        index += 1  if __name__ == '__main__':    file_path = "./output/girl.jpg"    image = Image.open(file_path)    image.show()    image = fill_image(image)    image_list = cut_image(image)    save_images(image_list)

读到这里,这篇“基于Python如何实现图片一键切割九宫格工具”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯