Python--快捷生成朋友圈九宫格图片

在命令行使用PIP安装库:

pip install pillow

按下win+R,弹出界面输入cmd回车,然后输入上面命令等待安装完成即可

直接上代码:

加了两个功能:拼接图片 和 分割图片

拼接图片暂时只能拼接两个大小相同的图片

分割图片 可以生成 四宫格 和 九宫格的图片



#图片处理.py

from PIL import Image

def yasuo(way):

    x, y = im.size

    a = eval(input("请输入想要缩小的倍数(0-1):"))

    if 0 < a <= 1:

        b = 1/a

        im.thumbnail((x//b, y//b))

        way1 = way[:-5] + '1' + way[-5:]

        im.save(way1)

        print("缩小后的尺寸:{}".format(im.size))

        print("图片已保存:{}".format(way1))

    else:

        print("错误!请输入0-1之间的数字!")

        yasuo(way)

    return(way1)

def xuanzhuan(way):

    q = input("请选择:\n[0]逆时针旋转  [1]左右翻转  [2]上下翻转\n")

    if q == '0':

        q1 = abs(eval(input("请输入旋转角度:")))

        im1 = im.rotate(q1)

        way2 = way[:-5] + '2' + way[-5:]

        im1.save(way2)

        print("旋转{}度图片已保存:{}".format(q1,way2))

    elif q == '1':

        im1 = im.transpose(Image.FLIP_LEFT_RIGHT)

        way2 = way[:-5] + '3' + way[-5:]

        im1.save(way2)

        print("左右翻转图片已保存:{}".format(way2))

    elif q == '2':

        im1 = im.transpose(Image.FLIP_TOP_BOTTOM)

        way2 = way[:-5] + '4' + way[-5:]

        im1.save(way2)

        print("上下翻转图片已保存:{}".format(way2))

    else:

        print("输入错误!")

        xuanzhuan(way)

    return(way2)

def pinjie(way):

    way_p =Image.open(input("请输入要拼接图片路径:"))

    x, y = im.size

    target = Image.new('RGB', (x * 2, y * 1))

    a = 0

    a1 = x                    # 图片距离左边的大小

    b = b1 = 0                # 图片距离上边的大小

    c = x

    c1 = x*2                  # 图片距离左边的大小 + 图片自身宽度

    d = d1 = y            # 图片距离上边的大小 + 图片自身高度

    target.paste(im, (a, b, c, d))

    target.paste(way_p, (a1, b1, c1, d1))

    way1 = way[:-5] + '5' + way[-5:]

    target.save(way1)

    print("拼接图片已保存:{}".format(way1))

    return(way1)

def qiege(way):

    x, y = im.size

    left = 0  #图片距离左边的宽度乘积值

    shang = 0  #图片距离上边的宽度乘积值

    index = 6  #图片名

    q = input("请选择: [0]四等分  [1]九等分\n")

    if q == '0':

        x,y = x/2,y/2

        for i in range(4):

            if i == 2:            # 当循环到第三个值时,需要切第二行的图片

                shang += 1

                left = 0

            a = x * left  # 图片距离左边的大小

            b = y * shang  # 图片距离上边的大小

            c = x * (left + 1)  # 图片距离左边的大小 + 图片自身宽度

            d = y * (shang + 1)  # 图片距离上边的大小 + 图片自身高度

            croping = im.crop((a,b,c,d))

            croping.save(way[:-5] + str(index) + way[-5:])

            index += 1

            left += 1

        print("四宫格图片已保存!")

    elif q == '1':

        x,y = x/3,y/3

        for i in range(9):

            if i in [3,6]:            # 当循环到第四和七个值时,需要切第二三行的图片

                shang += 1

                left = 0

            a = x * left  # 图片距离左边的大小

            b = y * shang  # 图片距离上边的大小

            c = x * (left + 1)  # 图片距离左边的大小 + 图片自身宽度

            d = y * (shang + 1)  # 图片距离上边的大小 + 图片自身高度

            croping = im.crop((a,b,c,d))

            croping.save(way[:-5] + str(index) + way[-5:])

            index += 1

            left += 1

        print("九宫格图片已保存!")

    else:

        print("输入错误!")

        qiege(way)

way = input("请输入图片路径:")

im = Image.open(way)

print(im.format, im.size, im.mode)

def main():

    q = input("请选择要做的操作:\n【0】压缩图片 【1】旋转图片 【2】横向拼接图片 【3】分割图片\n")

    if q == '0':

        yasuo(way)

    elif q == '1':

        xuanzhuan(way)

    elif q == '2':

        pinjie(way)

    elif q == '3':

        qiege(way)

    else:

        print("输入错误!请重新输入")

        main()

main()




关于图像路径,可以按着shift键不放,然后在图片上右键,【复制为路径】 粘贴的时候注意要把两侧的引号去掉,不然会报错


新生成的文件和原文件在同一文件夹下

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容