add
This commit is contained in:
parent
0543c04ce1
commit
2c1cb9f230
|
@ -0,0 +1,134 @@
|
|||
import os
|
||||
|
||||
from lib.all import *
|
||||
from PIL import Image
|
||||
import oss2
|
||||
|
||||
service_name = 'vas_deal'
|
||||
log_dir = '/app/log'
|
||||
logger = Logger(service_name, log_dir=log_dir)
|
||||
|
||||
access_key_id = "LTAI5tAdu5LRvZwm4LJa21Fo"
|
||||
access_key_secret = "WGvSQsDralTfFAAxhEqLBOgbXqflHo"
|
||||
endpoint_internal = "https://oss-cn-hangzhou-internal.aliyuncs.com"
|
||||
bucket_name = "wishpal-ironfan-media"
|
||||
|
||||
HorizontalView = 1 # 横图
|
||||
VerticalView = 2 # 竖图
|
||||
|
||||
Resize720P = 1280
|
||||
Resize1080P = 1920
|
||||
Resize1440P = 2560
|
||||
|
||||
|
||||
def calc_new_file_size(img_size: tuple, resize_p: int = Resize720P):
|
||||
w = int(img_size[0])
|
||||
h = int(img_size[1])
|
||||
|
||||
view_type = HorizontalView if w > h else VerticalView
|
||||
|
||||
if view_type == HorizontalView:
|
||||
reduce_rate = safe_div(resize_p, w)
|
||||
new_w = int(float(w) * reduce_rate)
|
||||
new_h = int(float(h) * reduce_rate)
|
||||
return new_w, new_h
|
||||
else:
|
||||
reduce_rate = safe_div(resize_p, h)
|
||||
new_w = int(float(w) * reduce_rate)
|
||||
new_h = int(float(h) * reduce_rate)
|
||||
return new_w, new_h
|
||||
|
||||
|
||||
def compress_and_save_image(img_path: str, dst_path: str, resize_p: int):
|
||||
try:
|
||||
img = Image.open(img_path)
|
||||
resize_img = img.resize((calc_new_file_size(img.size, resize_p)))
|
||||
resize_img.save(dst_path)
|
||||
return "success"
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
|
||||
|
||||
class S:
|
||||
def __init__(self):
|
||||
self.bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint_internal, bucket_name)
|
||||
self.col_image = MongoDB(
|
||||
host="mongodb://root:Wishpal2024@dds-bp1628b447c242e41.mongodb.rds.aliyuncs.com:3717,dds-bp1628b447c242e42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-74245203",
|
||||
port=3717,
|
||||
db="media",
|
||||
collection="image"
|
||||
)
|
||||
print(self.col_image)
|
||||
|
||||
def __del__(self):
|
||||
self.col_image.close()
|
||||
|
||||
def save_img_from_oss(self, oss_src_id: str, local_path: str):
|
||||
return self.bucket.get_object_to_file(oss_src_id, local_path)
|
||||
|
||||
def upload_img_to_oss(self, local_path: str, oss_src_id: str):
|
||||
return self.bucket.put_object_from_file(oss_src_id, local_path)
|
||||
|
||||
def proc(self):
|
||||
images = [
|
||||
{
|
||||
"src_id": "imgprod/23/f8/9b54-b9f0-4add-9024-7eb06b0ba0bf"
|
||||
}
|
||||
]
|
||||
for image in images:
|
||||
src_id = safe_get_str(image, "src_id")
|
||||
src_id_python_type = src_id.replace("/", "_")
|
||||
|
||||
# 当前目录
|
||||
cur_dir = os.getcwd() + "/"
|
||||
|
||||
# 先下载到本地,源文件
|
||||
oss_src_download_path = cur_dir + src_id_python_type + ".jpeg"
|
||||
try:
|
||||
self.save_img_from_oss(src_id, oss_src_download_path)
|
||||
src_size = os.path.getsize(oss_src_download_path)
|
||||
except Exception as e:
|
||||
logger.Error("save_img_from_oss fail, err: {}, src: {}".format(str(e), src_id))
|
||||
continue
|
||||
|
||||
# 源文件转720P
|
||||
oss_720_src_id = src_id.replace("imgprod", "imgprod720")
|
||||
local_720p_path = cur_dir + src_id_python_type.replace("imgprod", "imgprod720") + ".jpeg"
|
||||
ret720 = compress_and_save_image(oss_src_download_path, local_720p_path, Resize720P)
|
||||
if ret720 != "success":
|
||||
logger.Error("compress_and_save_image 720 fail, err: {}, src: {}, local: {}".format(ret720, oss_src_download_path, local_720p_path))
|
||||
continue
|
||||
try:
|
||||
ret = self.upload_img_to_oss(local_720p_path, oss_720_src_id)
|
||||
if ret.status != 200:
|
||||
logger.Error("upload_img_to_oss 720 fail, err: {}, src: {}, local: {}".format(ret720, oss_src_download_path, local_720p_path))
|
||||
continue
|
||||
# 更新mongo
|
||||
|
||||
except Exception as e:
|
||||
logger.Error("upload_img_to_oss 720 fail, err: {}, src: {}, local: {}".format(str(e), oss_src_download_path, local_720p_path))
|
||||
continue
|
||||
|
||||
# 源文件转1080P
|
||||
oss_1080_src_id = src_id.replace("imgprod", "imgprod1080")
|
||||
local_1080p_path = cur_dir + src_id_python_type.replace("imgprod", "imgprod1080") + ".jpeg"
|
||||
ret1080 = compress_and_save_image(oss_src_download_path, local_1080p_path, Resize1080P)
|
||||
if ret1080 != "success":
|
||||
logger.Error("compress_and_save_image 1080 fail, err: {}, src: {}, local: {}".format(ret1080, oss_src_download_path, local_1080p_path))
|
||||
continue
|
||||
ret = self.upload_img_to_oss(local_1080p_path, oss_1080_src_id)
|
||||
print(ret.status)
|
||||
|
||||
# 源文件转1440P
|
||||
oss_1440_src_id = src_id.replace("imgprod", "imgprod1440")
|
||||
local_1440p_path = cur_dir + src_id_python_type.replace("imgprod", "imgprod1440") + ".jpeg"
|
||||
ret1440 = compress_and_save_image(oss_src_download_path, local_1440p_path, Resize1440P)
|
||||
if ret1440 != "success":
|
||||
logger.Error("compress_and_save_image 1440 fail, err: {}, src: {}, local: {}".format(ret1440, oss_src_download_path, local_1440p_path))
|
||||
continue
|
||||
ret = self.upload_img_to_oss(local_1440p_path, oss_1440_src_id)
|
||||
print(ret.status)
|
||||
|
||||
|
||||
s = S()
|
||||
s.proc()
|
|
@ -254,3 +254,5 @@ def dict2json(dic):
|
|||
if not isinstance(dic, dict):
|
||||
return json.dumps({})
|
||||
return json.dumps(dic, ensure_ascii=False)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue