summaryrefslogtreecommitdiff
path: root/megapixels/app/server/tasks/blur.py
diff options
context:
space:
mode:
Diffstat (limited to 'megapixels/app/server/tasks/blur.py')
-rw-r--r--megapixels/app/server/tasks/blur.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/megapixels/app/server/tasks/blur.py b/megapixels/app/server/tasks/blur.py
new file mode 100644
index 00000000..74798cee
--- /dev/null
+++ b/megapixels/app/server/tasks/blur.py
@@ -0,0 +1,81 @@
+import os
+import sys
+import time
+import datetime
+import json
+from PIL import Image
+import cv2 as cv
+import numpy as np
+from app.utils.im_utils import ensure_np, ensure_pil
+from flask import current_app as app
+
+import app.settings.app_cfg as cfg
+
+from app.server.tasks import celery
+
+from celery.utils.log import get_task_logger
+log = get_task_logger(__name__)
+import imutils
+
+@celery.task(bind=True)
+def blur_task(self, uuid_name, fn):
+ """Process image and update during"""
+ log.debug('process_image_task, uuid: {}'.format(uuid_name))
+ log.debug('fn: {}'.format(fn))
+
+ files = []
+
+ meta = {
+ 'step': 0,
+ 'total': 3,
+ 'message': 'Starting',
+ 'uuid': uuid_name,
+ 'data': {},
+ }
+ self.update_state(state='PROCESSING', meta=meta)
+
+ im = Image.open(fn).convert('RGB')
+ os.remove(fn)
+
+ meta['step'] += 1
+ meta['message'] = 'Applying blur'
+ self.update_state(state='PROCESSING', meta=meta)
+
+ im_np = ensure_np(im)
+ im_blur = cv.blur(im_np, (5,5), 1.0)
+ im_blur_pil = ensure_pil(im_blur)
+
+ fn = uuid_name + '_blur.jpg'
+ fpath = os.path.join(cfg.DIR_SITE_USER_CONTENT, fn)
+ im_blur_pil.save(fpath, 'JPEG', quality=80)
+ log.debug('fpath: {}'.format(fpath))
+ print('fpath: {}'.format(fpath))
+
+ # files.append({
+ # 'title': 'Blurred image',
+ # 'fn': render_uri + uuid_name + '_blur.jpg'
+ # })
+
+ meta['step'] += 1
+ meta['message'] = 'Applying blur'
+ meta['data']['blur_fn'] = {
+ 'title': 'Blurred image',
+ 'url': os.path.join('/user_content/', fn)
+ }
+ self.update_state(state='PROCESSING', meta=meta)
+ time.sleep(3)
+
+ if os.path.exists(fpath):
+ os.remove(fpath)
+
+ meta['step'] += 1
+ meta['message'] = 'Securely deleting user content'
+ self.update_state(state='PROCESSING', meta=meta)
+ time.sleep(2)
+
+ log.debug('done!!')
+
+ meta['step'] = meta['total']
+ meta['state'] = 'complete'
+ return meta
+