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

需求

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

思路

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

代码实现

# -*- 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

截取的效果:
这里写图片描述
github链接:https://github.com/xuna123/Python_pro

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值