zoukankan      html  css  js  c++  java
  • 使用 Python 切割图片

      刚好我有张 PNG 图片需要均匀切割,刚好我不会 PhotoShop,刚好我想用 Python 来练练手。

      于是撸袖子码脚本。

    import os
    from PIL import Image
    
    def splitimage(src, rownum, colnum, dstpath):
        img = Image.open(src)
        w, h = img.size
        if rownum <= h and colnum <= w:
            print('Original image info: %sx%s, %s, %s' % (w, h, img.format, img.mode))
            print('开始处理图片切割, 请稍候...')
    
            s = os.path.split(src)
            if dstpath == '':
                dstpath = s[0]
            fn = s[1].split('.')
            basename = fn[0]
            ext = fn[-1]
    
            num = 0
            rowheight = h // rownum
            colwidth = w // colnum
            for r in range(rownum):
                for c in range(colnum):
                    box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
                    img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)
                    num = num + 1
    
            print('图片切割完毕,共生成 %s 张小图片。' % num)
        else:
            print('不合法的行列切割参数!')
    
    src = input('请输入图片文件路径:')
    if os.path.isfile(src):
        dstpath = input('请输入图片输出目录(不输入路径则表示使用源图片所在目录):')
        if (dstpath == '') or os.path.exists(dstpath):
            row = int(input('请输入切割行数:'))
            col = int(input('请输入切割列数:'))
            if row > 0 and col > 0:
                splitimage(src, row, col, dstpath)
            else:
                print('无效的行列切割参数!')
        else:
            print('图片输出目录 %s 不存在!' % dstpath)
    else:
        print('图片文件 %s 不存在!' % src)

      然后执行。

      恩,确实很简单。Python 的库实在很强大,也很好用。我居然有些不想用 Delphi 写小工具了:)

  • 相关阅读:
    c语言数据处理!
    指针的概念
    return的用处
    用java写随机出题
    java 新手
    分支程序设计。
    不同车型 不同起步价不同费用的问题(switch语句)
    这两天做了很多随机函数的用法(下面是一个出题实验)。
    yum 命令讲解
    日常工作中一些常用命令
  • 原文地址:https://www.cnblogs.com/ecofast/p/5487926.html
Copyright © 2011-2022 走看看