刚好我有张 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 写小工具了:)
时间: 2024-10-25 00:01:37