feat: event增加压缩图片字段

This commit is contained in:
caoqianming 2023-08-22 11:13:09 +08:00
parent 39a3001211
commit 563893efac
6 changed files with 47 additions and 7 deletions

View File

@ -193,6 +193,20 @@ class CorrectViewSet(CustomGenericViewSet):
item.shift = item.sflog.shift
item.save()
return Response()
# @action(methods=['post'], detail=False, serializer_class=Serializer)
# def global_img_compressed(self, request, pk=None):
# """矫正全景压缩照片
# 矫正全景压缩照片
# """
# from apps.ecm.models import Event
# events = Event.object.filter(global_img_compressed=None).exclude(glboal_img=None)
# for event in events:
# path, end= event.global_img.split('.')
# event.global_img_compressed = path + '_compressed.' + end
# event.save()
# return Response()
class TestViewSet(CustomGenericViewSet):
authentication_classes = ()

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2023-08-22 02:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ecm', '0010_alter_eventcate_code'),
]
operations = [
migrations.AddField(
model_name='event',
name='global_img_compressed',
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='全景照压缩'),
),
]

View File

@ -83,6 +83,7 @@ class Event(CommonBDModel):
cates = models.ManyToManyField(EventCate, verbose_name='关联事件种类', through='ecm.eventdo', related_name='event_cates')
face_img = models.CharField('人脸照', max_length=1000, null=True, blank=True)
global_img = models.CharField('全景照', max_length=1000, null=True, blank=True)
global_img_compressed = models.CharField('全景照压缩', max_length=1000, null=True, blank=True)
area = models.ForeignKey(Area, verbose_name='发生区域', on_delete=models.SET_NULL, null=True, blank=True)
vchannel = models.ForeignKey(TDevice, verbose_name='抓拍设备', on_delete=models.SET_NULL, null=True, blank=True)
location = models.JSONField('事件点位坐标', default=dict, null=False, blank=True)

View File

@ -59,10 +59,16 @@ def save_dahua_pic(pic_url: str, save_path: str = '/media/'):
os.makedirs(full_path)
with open(full_path + file_name, 'wb') as f:
f.write(res.content)
full_path_file = full_path + file_name
compress_image(full_path_file)
return path + file_name
def compress_global_img(path_file):
full_path_file = settings.BASE_DIR + path_file
try:
out_file, _ = compress_image(full_path_file)
return out_file.replace(settings.BASE_DIR, '')
except:
myLogger.error(f'图片压缩失败-{full_path_file}', exc_info=True)
return None
def get_ep_default():
"""返回人员默认位置信息
@ -345,6 +351,7 @@ def dispatch_dahua_event(data: dict):
if cates:
event = Event()
event.global_img = ec_codes['global_img'] if ec_codes.get('global_img', None) else save_dahua_pic(global_img_o)
event.global_img_compressed = compress_global_img(event.global_img)
if face_img_o:
event.face_img = save_dahua_pic(face_img_o)
event.area = area
@ -657,6 +664,7 @@ def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None):
event = Event()
event.global_img = ec_codes['global_img'] if ec_codes.get('global_img', None) else save_dahua_pic(global_img_o)
event.global_img_compressed = compress_global_img(event.global_img)
event.vchannel = vchannel
event.area = vchannel.area
event.obj_cate = obj_cate

View File

@ -197,7 +197,9 @@ def monitor_and_analyse(vchannel_code: str, algo_codes: list):
@shared_task(base=CustomTask)
def compressed_all_ecm_image():
from apps.ecm.service import compress_global_img
events = Event.objects.exclude(global_img=None)
for event in events:
if event.global_img:
compress_image(settings.BASE_DIR + event.global_img)
if event.global_img and event.global_img_compressed is None:
event.global_img_compressed = compress_global_img(event.global_img)
event.save()

View File

@ -185,9 +185,6 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, DestroyModelMixin, Custom
cates_str = ''
for m in i['cates_']:
cates_str = cates_str + m['name'] + '/'
if i['global_img']:
path, end = i['global_img'].split('.')
i['global_img_compressed'] = path + '_compressed.' + end
data.append(
[
cates_str,