【轉】python圖片切分(一張圖片切分為多張小圖片)
阿新 • • 發佈:2021-01-12
轉自其他人的部落格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