美文网首页
五步做出九宫格图片(Python3版)

五步做出九宫格图片(Python3版)

作者: CC先生之简书 | 来源:发表于2018-08-12 21:25 被阅读519次

    微信朋友圈中很多玩家都对那种9宫格拼图的动态情有独钟,一般都会使用到图片处理软件来处理拼图。今天试试从网上看到的Python代码来实现此功能。

    1. 安装PIL包

    2. Import PIL包中的Image模块
      PIL 的主要功能定义在 Image 类当中,而 Image 类定义在同名的 Image 模块当中。使用 PIL 的功能,一般都是从新建一个 Image 类的实例开始。新建 Image 类的实例有多种方法。你可以用 Image 模块的 open() 函数打开已有的图片档案,也可以处理其它的实例,或者从零开始构建一个实例。

    from PIL import Image
    sourceFileName = "source.png"
    avatar         = Image.open(sourceFileName)
    

    上述代码引入了 Image 模块,并以 open() 方法打开了 source.png 这个图像,构建了名为 avatar 的实例。如果打开失败,则会抛出 IOError 异常.

    1. 将要分隔的图像读取到一个变量中,然后定义一个 fill_image() 方法,用来填充图像让原本大小不一的图像,重新变为一个长宽相同的正方形图像。

    2. 利用 cut_image() 方法,把图像分隔成 9 张,因为微信朋友圈最多发 9 张图片。

    3. 将生成的图片发送朋友圈。

    其中 fill_image()方法会用到的关键代码为:

        #生成新图片[白底]  
        new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')
        #将之前的图粘贴在新图上,居中   
        if width > height:#原图宽大于高,则填充图片的竖直维度  #(x,y)二元组表示粘贴上图相对下图的起始位置,是个坐标点。  
            new_image.paste(image, (0, int((new_image_length - height) / 2)))  
    

    Image.new
    PIL.Image.new(mode, size, color=0)

    Creates a new image with the given mode and size.
    创建一个指定 mode和size的新image对象。

    Image.paste
    Image.paste(im, box=None, mask=None)
    将其它的image 拷贝到当前的这个image中

    cut_image()用到的关键代码为:

      image_list = [image.crop(box) 
    

    image.crop
    Image.crop(box=None)
    从该图像返回一个矩形区域。该框是一个4元组, 定义左、上、右和下像素坐标。

    save_image()用到的关键代码为:

    image.save(str(index) + '.png', 'PNG')
    

    image.save
    Image.save(fp, format=None, **params)
    将此图像保存在给定文件名下。如果没有指定格式, 则要使用的格式将从文件扩展名 (如果可能的话) 确定。

    经过以上几步,你就可以构建你的九宫格妥妥的发朋友圈啦~~~

    具体代码详见:https://gitee.com/ccsensei/jiugongge.git

    当然也有另一个思路来构建九宫格,就是选9张不同的图片来组成,之前写过一篇(改成3*3的就okay),有兴趣的小伙伴可以参看:
    [花好月圆夜,PIL拼图时]https://www.jianshu.com/p/3eac9b070976

    参考:http://pillow.readthedocs.io/en/3.1.x/handbook/concepts.html#concept-modes

    相关文章

      网友评论

          本文标题:五步做出九宫格图片(Python3版)

          本文链接:https://www.haomeiwen.com/subject/joqebftx.html