1. 程式人生 > 其它 >【轉】python圖片切分(一張圖片切分為多張小圖片)

【轉】python圖片切分(一張圖片切分為多張小圖片)

技術標籤:Python 筆記亂七八糟知識點

轉自其他人的部落格or網頁,找不到原出處了qaq

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

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)

直接就可以執行

不過我因為過大的圖片出現警告

E:\tichi_data\jingwei_round1_test_a_20190619\jingwei_round1_test_a_20190619/image_3.png

插入程式碼

from PIL import Image
Image.MAX_IMAGE_PIXELS = None