刚好我有张 PNG 图片需要均匀切割,刚好我不会 PhotoShop,刚好我想用 Python 来练练手。
于是撸袖子码脚本。
import os from PIL import Imagedef splitimage(src, rownum, colnum, dstpath):img = Image.open(src)w, h = img.sizeif 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 = 0rowheight = h // rownumcolwidth = w // colnumfor 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 + 1print('图片切割完毕,共生成 %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 写小工具了:)