转移
This commit is contained in:
		
							
								
								
									
										41
									
								
								utilities/download.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								utilities/download.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
import io
 | 
			
		||||
import os
 | 
			
		||||
import requests
 | 
			
		||||
 | 
			
		||||
from PIL import Image, ImageFile
 | 
			
		||||
from models.oss import bucket_image2, bucket_webp
 | 
			
		||||
from configs.config import IMAGES_PATH
 | 
			
		||||
 | 
			
		||||
ImageFile.LOAD_TRUNCATED_IMAGES = True
 | 
			
		||||
 | 
			
		||||
# 下载图片(使用OSS下载)
 | 
			
		||||
def download_image(url:str) -> Image:
 | 
			
		||||
    if url.startswith('http://image.gameuiux.cn/') or url.startswith('https://image.gameuiux.cn/'):
 | 
			
		||||
        try:
 | 
			
		||||
            url = url.replace('http://image.gameuiux.cn/', '').replace('https://image.gameuiux.cn/', '')
 | 
			
		||||
            obj = bucket_image2.get_object(url).read()
 | 
			
		||||
            return Image.open(io.BytesIO(obj))
 | 
			
		||||
        except Exception:
 | 
			
		||||
            return None
 | 
			
		||||
    else:
 | 
			
		||||
        try:
 | 
			
		||||
            response = requests.get(url)
 | 
			
		||||
            return Image.open(io.BytesIO(response.content))
 | 
			
		||||
        except Exception:
 | 
			
		||||
            print('图片下载失败:', url)
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
# 生成缩略图, 写入OSS
 | 
			
		||||
def generate_thumbnail(image:Image, id:int, version:str, n:int, w:int, ext:str):
 | 
			
		||||
    path = f"{id}-{version}@{n}x{w}.{ext}"
 | 
			
		||||
    if bucket_webp.object_exists(path):
 | 
			
		||||
        print('缩略图已经存在:', path)
 | 
			
		||||
        return
 | 
			
		||||
    # 将 image 对象复制一份, 防止影响原图
 | 
			
		||||
    image = image.copy()
 | 
			
		||||
    image.thumbnail((n*w, image.size[1]))
 | 
			
		||||
    image.save(f"{IMAGES_PATH}/{path}", ext, save_all=True)
 | 
			
		||||
    bucket_webp.put_object_from_file(path, f"{IMAGES_PATH}/{path}")
 | 
			
		||||
    os.remove(f"{IMAGES_PATH}/{path}")
 | 
			
		||||
    print('缩略图写入 OSS:', path)
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user