python生成指定尺寸的縮略圖

目標:

給定圖片url和指定圖片尺寸,生成縮略圖並保存。
用於生成正方形圖並避免圖片拉伸變形。

原始圖片(400x225):
在這裏插入圖片描述
resize後的圖片(128x128):
在這裏插入圖片描述

import requests as req
from PIL import Image
from io import BytesIO


def make_thumb(url, sizes=(128, 128)):
    """
    生成指定尺寸縮略圖
    :param url: 圖像鏈接
    :param sizes: 指定尺寸
    :return: 無返回,直接保存圖片
    """
    response = req.get(url)
    im = Image.open(BytesIO(response.content))
    mode = im.mode
    if mode not in ('L', 'RGB'):
        if mode == 'RGBA':
            # 透明圖片需要加白色底
            alpha = im.split()[3]
            bgmask = alpha.point(lambda x: 255 - x)
            im = im.convert('RGB')
            im.paste((255, 255, 255), None, bgmask)
        else:
            im = im.convert('RGB')

    # 切成方圖,避免變形
    width, height = im.size
    if width == height:
        region = im
    else:
        if width > height:
            # h*h
            delta = (width - height) / 2
            box = (delta, 0, delta + height, height)
        else:
            # w*w
            delta = (height - width) / 2
            box = (0, delta, width, delta + width)
        region = im.crop(box)

    # resize
    thumb = region.resize((sizes[0], sizes[1]), Image.ANTIALIAS)
    #保存圖片
    filename = url.split('/')[-1]
    name, ext = filename.split('.')
    savename = name + str(sizes[0]) + '_' + str(sizes[1]) + '.' + ext
    thumb.save(savename, quality=100)


url = 'http://lh3.ggpht.com/_S0f-AWxKVdM/SdeJxV3uhDI/AAAAAAAAHrY/FVTEpdNf4X0/lenna%5B4%5D.jpg'
make_thumb(url)

refererence:
https://www.jb51.net/article/49843.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章