import hashlib import json from nonebot.log import logger as sv import os import random import time from io import BytesIO import aiohttp import qrcode import requests import requests.exceptions from PIL import Image, ImageDraw, ImageFont # PNG重绘大小 def png_resize(source_file, new_width=0, new_height=0, resample="LANCZOS", ref_file=''): """ PNG缩放透明度处理 :param source_file: 源文件(Image.open()) :param new_width: 设置的宽度 :param new_height: 设置的高度 :param resample: 抗锯齿 :param ref_file: 参考文件 :return: """ img = source_file img = img.convert("RGBA") width, height = img.size if ref_file != '': imgRef = Image.open(ref_file) new_width, new_height = imgRef.size else: if new_height == 0: new_height = new_width * width / height bands = img.split() resample_map = { "NEAREST": Image.NEAREST, "BILINEAR": Image.BILINEAR, "BICUBIC": Image.BICUBIC, "LANCZOS": Image.LANCZOS } resample_method = resample_map.get(resample, Image.LANCZOS) # 默认使用 LANCZOS bands = [b.resize((new_width, new_height), resample=resample_method) for b in bands] resized_file = Image.merge('RGBA', bands) return resized_file