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

有时候发微博时候,需要裁切图片为九宫格,但是ps或者其他工具都太麻烦,这里写一个python一键切割九宫格的工具,以供大家学习和使用!

实现代码

"""
 1.将一张图片填充为正方形
 2.将文字加到方形图片上
 3.讲图片切为9张图并存储
"""
import os
from tkinter import filedialog
from PIL import Image
from future.moves import tkinter
# 填充文字的库
import PIL
from PIL import ImageFont,Image,ImageDraw

def 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 Image
import 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实现图片一键切割九宫格的工具的文章就介绍到这了,更多相关Python图片切割九宫格内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python实现图片九宫格分割

    大家都知道在微信朋友圈或者微博以及QQ动态中,有很多"强迫症患者"发图片都爱发9张,而有些图是一张图片分成的九宫图,对于这种操作,大家知道是怎么做到的吗? 本文就是用Python做的一个九宫格图片生成器,是一个打包好的exe文件,用户无需部署安装Python的开发环境,在本地就可以运行此程序,以此快速生成九宫格图片. 下面是程序的所有代码,这是一个Python GUI程序,代码不多,也很容易理解: # -*- coding: UTF-8 -*- # 将一张图片分成九张,九宫格 impo

  • Python切割图片成九宫格的示例代码

    这篇文字讲述如何使用Python把一张完整的大图切割成9份小图片,制作朋友圈九宫格图文分享. 原图如下: 我们想要利用这张图制作高逼格的九宫格朋友圈分享. 达到类似于这样的效果: 实现原理非常简单,那就是利用PIL库对原图不断画小区域然后切下来存储成新的小图片. 假设每一个格子的宽和高分别是w.h,那么第row行(从0开始计数),第col列(从0开始计数)的格子左上角坐标和右下角坐标分别是(col * w, row * h),(col * w + w, r * h + h). code snip

  • python生成九宫格图片

    本文实例为大家分享了Python九宫格图片生成的具体代码,供大家参考,具体内容如下 利用Image类将一张图片分割成9张,发朋友圈利器,打包成EXE后,长期使用. 效果大致是:           库:pillow 源码: # pengyouquanPicture.py # 朋友圈九宫格图片制作 from PIL import Image import sys # 先将input image 填充为正方形 def fill_image(image): width, height = image.

  • 利用Python实现朋友圈中的九宫格图片效果

    前言 大家应该经常在朋友圈看到有人发九宫格图片,其实质就是将一张图片切成九份,然后在微信中一起发这九张图即可. 说到切图,Python 就可以实现,主要用到的 Python 库为 Pillow,安装使用 pip install pillow 即可,切图的主要步骤如下: 打开要处理的图片 判断打开的图片是否为正方形 如果是正方形,就进行九等分,如果不是正方形,先用白色填充为正方形,再进行九等分 保存处理完的图片 主要实现代码如下: # 填充新的 image def fill_image(image

  • python实现图片九宫格分割的示例

    简介 大家都知道在微信朋友圈或者微博以及QQ动态中,有很多"强迫症患者"发图片都爱发9张,而有些图是一张图片分成的九宫图,对于这种操作,大家知道是怎么做到的吗? 本文就是用Python做的一个九宫格图片生成器,是一个打包好的exe文件,用户无需部署安装Python的开发环境,在本地就可以运行此程序,以此快速生成九宫格图片. 实现原理 实现原理非常简单,那就是利用PIL库对原图不断画小区域然后切下来存储成新的小图片. 假设每一个格子的宽和高分别是w.h,那么第row行(从0开始计数),第

  • python制作朋友圈九宫格图片

    本文实例为大家分享了python朋友圈九宫格图片的具体制作代码,供大家参考,具体内容如下 将一张图片,切分成九宫格的样式: 原图: # -*- coding: UTF-8 -*- from PIL import Image import sys import os __author__ = 'kandy' #当前文件所在文件夹 DIR_NAME = os.path.dirname( os.path.abspath(__file__) ) #填充新的image def fill_image(ima

  • Python生成九宫格图片的示例代码

    一.前言 大家在朋友圈应该看到过用一张图片以九宫格的方式显示,效果大致如下: 要实现上面的效果非常简单,我们只需要截取图片的九个区域即可.今天我们就要带大家使用Python来实现一下九宫格图片的生成.在开始之前,我们需要安装一下Pillow模块,语句如下: pip install pillow 下面我们先来看看一些简单的图片操作. 二.图片基本操作 今天我们会使用到三个操作,分别是读取图片.保存图片和截取图片.下面我们分别来看看. 2.1 读取图片 在Pillow中,我们最常用的就是Image子

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

    有时候发微博时候,需要裁切图片为九宫格,但是ps或者其他工具都太麻烦,这里写一个python一键切割九宫格的工具,以供大家学习和使用! 实现代码 """ 1.将一张图片填充为正方形 2.将文字加到方形图片上 3.讲图片切为9张图并存储 """ import os from tkinter import filedialog from PIL import Image from future.moves import tkinter # 填充文字的

  • 基于Python实现图片九宫格切图程序

    目录 1.python代码实现图片分割成九宫格 2.C++代码实现图片分割成九宫格(附Opencv配置教程) 1.python代码实现图片分割成九宫格 需要包含的库,没有下载安装的,需要自己安装哦. 实现原理很简单,就是用PIL库不断画小区域,切下来存储成新的小图片. 假设每一个格子的宽和高分别是w.h,那么第row行(从0开始计数),第col列(从0开始计数)的格子左上角坐标和右下角坐标分别是(col * w, row * h),(col * w + w, r * h + h). 代码实例:

  • 如何基于Python获取图片的物理尺寸

    这篇文章主要介绍了如何基于Python获取图片的物理尺寸,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题 如何获取图片的物理尺寸,而非(width, height)? 代码 以女神图为例 #! -*- coding: utf-8 -*- import requests import io url = "http://s1.sinaimg.cn/large/001Db1PVzy7qxVQWMjs06" image = request

  • 基于Python实现图片主题色的提取

    目录 前言 实现流程 安装依赖 提取主题色 测试 前言 在 Groove 音乐中,当我们改变歌曲时,底部播放栏的颜色会随专辑封面而变,比如下图中播放栏的颜色变成了 aiko 衣服的颜色.下面我们会在 python 中实现相同的效果,也就是提取出图片中的主题色. 实现流程 安装依赖 提取主题色有很多方法,比如使用 k-means 聚类,选出 k 个 RGB 坐标的聚类中心,但是速度会差一些,我们这里换成中位切分法.已经有人为我们实现好这个算法了,我们可以拿来就用. pip install colo

  • 基于Python制作一个多进制转换工具

    目录 前言 主要步骤 完整代码 前言 学习资料下载链接 提取码:tha8  进制转换计算工具含源文件 主要步骤 导入模块 import tkinter from tkinter import * import tkinter as tk from tkinter.ttk import * 整个框架的主结构 root = Tk() root.title('贱工坊-进制转换计算') # 程序的标题名称 root.geometry("580x400+512+288") # 窗口的大小及页面的

  • 基于Python制作图像完美超分处理工具

    目录 前言 安装 使用 图片超分 视频超分 项目说明 代码说明 总结 前言 很久没更新这个专栏了,最近比较忙.前段时间看到了这个模型觉着很有意思,弄下来自己玩了玩,但是没时间写文章,一直搁置到现在. 废话不多说,先上Github地址: RealBasicVSR地址 从给出的效果来看,还是很不错的,左侧是超分后的画面,右边是原画质,得到明显提升.下面我说一下我的安装过程,还有一些使用中的踩坑,让大家去测试项目的时候可以提前规避. 安装 项目拉下来之后,我们先打开README,看看说明. 安装的步骤

  • 基于Python实现在线二维码生成工具

    目录 1.环境搭建 2.二维码生成功能的封装 3.网页应用的搭建 在今天的教程中,费老师我将为大家展示如何通过纯Python编程的方式,开发出一个网页应用,从而帮助用户直接通过浏览器访问,即可基于输入的网址等文字内容,完成常规二维码.静态底图二维码以及动图底图二维码的快捷生成,先来看一看应用的主要功能操作演示: 只写Python开发这样精致的工具应用非常简单,下面我来带大家从搭建环境开始,学习整个过程: 1.环境搭建 首先我们来创建应用的虚拟开发环境,建议使用Conda,命令如下: 创建虚拟环境

  • 基于Python实现简单的汉字拼音转换工具

    目录 1.准备 2.基本使用 3.高级使用 将汉字转为拼音,可以用于批量汉字注音.文字排序.拼音检索文字等常见场景. 现在互联网上有许多拼音转换工具,基于Python的开源模块也不少,今天给大家介绍一个功能特性最多的模块:  pypinyin ,它支持以下特性: 1. 根据词组智能匹配最正确的拼音. 2. 支持多音字. 3. 简单的繁体支持, 注音支持. 4. 支持多种不同拼音/注音风格. 5. 命令行工具一键转化 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,

  • 基于Python实现抢注大词的提词工具

    假设通过爬虫获得了一个自媒体.txt 想要从这些关键词中提取流量最大的关键词 可以通过如下算法实现: from smoothnlp.algorithm.phrase import extract_phrase import re class_name = '自媒体' class_name_low = class_name.lower() top_k = 100 with open('%s.txt' % class_name,'r',encoding='utf-8') as file: data_

  • 基于Python制作B站视频下载小工具

    目录 1. 原理简介 2. 网页分析 3. 视频爬取 4. 存入本地 5. GUI工具制作 1. 原理简介 原理很简单,就是获取视频资源的源地址,然后爬取视频的二进制内容,再写入到本地即可. 2. 网页分析 打开该网页,然后F12进入开发者模式,接着点开网络—>全部,因为视频资源一般比较大,我这里根据大小进行了从大到小的排序,找到了第一条这些可能和视频源地址有关. 然后,我们复制找到的这条里的url部分不变的部分,回到元素中ctrl+F搜索,找到了可能和视频源地址有关的节点. 果然,我们复制这部

随机推荐