feat: event增加压缩图片字段
This commit is contained in:
parent
39a3001211
commit
563893efac
|
@ -193,6 +193,20 @@ class CorrectViewSet(CustomGenericViewSet):
|
||||||
item.shift = item.sflog.shift
|
item.shift = item.sflog.shift
|
||||||
item.save()
|
item.save()
|
||||||
return Response()
|
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):
|
class TestViewSet(CustomGenericViewSet):
|
||||||
authentication_classes = ()
|
authentication_classes = ()
|
||||||
|
|
|
@ -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='全景照压缩'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -83,6 +83,7 @@ class Event(CommonBDModel):
|
||||||
cates = models.ManyToManyField(EventCate, verbose_name='关联事件种类', through='ecm.eventdo', related_name='event_cates')
|
cates = models.ManyToManyField(EventCate, verbose_name='关联事件种类', through='ecm.eventdo', related_name='event_cates')
|
||||||
face_img = models.CharField('人脸照', max_length=1000, null=True, blank=True)
|
face_img = models.CharField('人脸照', max_length=1000, null=True, blank=True)
|
||||||
global_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)
|
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)
|
vchannel = models.ForeignKey(TDevice, verbose_name='抓拍设备', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
location = models.JSONField('事件点位坐标', default=dict, null=False, blank=True)
|
location = models.JSONField('事件点位坐标', default=dict, null=False, blank=True)
|
||||||
|
|
|
@ -59,10 +59,16 @@ def save_dahua_pic(pic_url: str, save_path: str = '/media/'):
|
||||||
os.makedirs(full_path)
|
os.makedirs(full_path)
|
||||||
with open(full_path + file_name, 'wb') as f:
|
with open(full_path + file_name, 'wb') as f:
|
||||||
f.write(res.content)
|
f.write(res.content)
|
||||||
full_path_file = full_path + file_name
|
|
||||||
compress_image(full_path_file)
|
|
||||||
return path + file_name
|
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():
|
def get_ep_default():
|
||||||
"""返回人员默认位置信息
|
"""返回人员默认位置信息
|
||||||
|
@ -345,6 +351,7 @@ def dispatch_dahua_event(data: dict):
|
||||||
if cates:
|
if cates:
|
||||||
event = Event()
|
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 = 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:
|
if face_img_o:
|
||||||
event.face_img = save_dahua_pic(face_img_o)
|
event.face_img = save_dahua_pic(face_img_o)
|
||||||
event.area = area
|
event.area = area
|
||||||
|
@ -657,6 +664,7 @@ def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None):
|
||||||
|
|
||||||
event = Event()
|
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 = 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.vchannel = vchannel
|
||||||
event.area = vchannel.area
|
event.area = vchannel.area
|
||||||
event.obj_cate = obj_cate
|
event.obj_cate = obj_cate
|
||||||
|
|
|
@ -197,7 +197,9 @@ def monitor_and_analyse(vchannel_code: str, algo_codes: list):
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
def compressed_all_ecm_image():
|
def compressed_all_ecm_image():
|
||||||
|
from apps.ecm.service import compress_global_img
|
||||||
events = Event.objects.exclude(global_img=None)
|
events = Event.objects.exclude(global_img=None)
|
||||||
for event in events:
|
for event in events:
|
||||||
if event.global_img:
|
if event.global_img and event.global_img_compressed is None:
|
||||||
compress_image(settings.BASE_DIR + event.global_img)
|
event.global_img_compressed = compress_global_img(event.global_img)
|
||||||
|
event.save()
|
|
@ -185,9 +185,6 @@ class EventViewSet(ListModelMixin, RetrieveModelMixin, DestroyModelMixin, Custom
|
||||||
cates_str = ''
|
cates_str = ''
|
||||||
for m in i['cates_']:
|
for m in i['cates_']:
|
||||||
cates_str = cates_str + m['name'] + '/'
|
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(
|
data.append(
|
||||||
[
|
[
|
||||||
cates_str,
|
cates_str,
|
||||||
|
|
Loading…
Reference in New Issue