欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实践项目十一:Python批量图片切割(PIL)

程序员文章站 2024-02-19 22:37:40
...

需求

将一张图片均匀向右移动,向下移动,每移动一次,切割出一个固定面积的图片。

思路

我们知道图片实际上是有一个二维数组组成的,所以先控制横坐标不变,纵坐标截取,一直到纵坐标的边界,然后向下移动横坐标,重复上一步操作。
同时在这里我设置了三个不同的截取大小。

代码实现

# -*- coding:utf-8 -*-

from PIL import Image

'''
   @author:xunalove
    修改文件位置
    修改图片id

'''
def cut(id,vx,vy):
    #打开图片图片1.jpg
    name1 = "/home/xuna/桌面/3/图片"+ id + ".jpg"
    name2 = "/home/xuna/桌面/3/图片"+ id +"_切块_"
    im =Image.open(name1)

    #偏移量
    dx = 40
    dy = 40
    n = 1

    #左上角切割
    x1 = 0
    y1 = 0
    x2 = vx
    y2 = vy

    #纵向
    while x2 <= 320:
        #横向切
        while y2 <= 480:
            name3 = name2 + str(n) + ".jpg"
            #print n,x1,y1,x2,y2
            im2 = im.crop((y1, x1, y2, x2))
            im2.save(name3)
            y1 = y1 + dy
            y2 = y1 + vy
            n = n + 1
        x1 = x1 + dx
        x2 = x1 + vx
        y1 = 0
        y2 = vy

    print "图片切割成功,切割得到的子图片数为"
    return n-1


if __name__=="__main__":

    #取图片id的后两位
    id = "1"

    #切割图片的面积 vx,vy
    #大
    res = cut(id,160,160)

    #中
    #res = cut(id,120,120)

    #小
    #res = cut(id,80,80)

    print res

截取的效果:
实践项目十一:Python批量图片切割(PIL)
github链接:https://github.com/xuna123/Python_pro

相关标签: python 图片