use exiv2 to remove metadata instead of imagemagick, much much much faster

pull/29/head
Aevann1 2022-11-28 05:49:17 +02:00
parent d5bdc60eea
commit 94f788ffe9
3 changed files with 14 additions and 10 deletions

View File

@ -11,6 +11,7 @@ RUN apt install -y imagemagick
RUN apt install -y postgresql RUN apt install -y postgresql
RUN apt install -y libpq-dev RUN apt install -y libpq-dev
RUN apt install -y nano RUN apt install -y nano
RUN apt install -y exiv2
COPY requirements.txt /etc/requirements.txt COPY requirements.txt /etc/requirements.txt

View File

@ -142,7 +142,7 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in
try: try:
with Image.open(filename) as i: with Image.open(filename) as i:
params = ["magick", filename, "-strip", "-auto-orient"] params = ["magick", filename]
if i.format.lower() != 'webp': if i.format.lower() != 'webp':
params.extend(["-coalesce", "-quality", "88", "-define", "webp:method=5"]) params.extend(["-coalesce", "-quality", "88", "-define", "webp:method=5"])
if trim and len(list(Iterator(i))) == 1: if trim and len(list(Iterator(i))) == 1:
@ -158,14 +158,15 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in
abort(415) abort(415)
return None return None
params.append(filename) if len(params) > 2:
try: params.append(filename)
subprocess.run(params, timeout=MAX_IMAGE_CONVERSION_TIMEOUT) try:
except subprocess.TimeoutExpired: subprocess.run(params, timeout=MAX_IMAGE_CONVERSION_TIMEOUT)
if has_request: except subprocess.TimeoutExpired:
abort(413, ("An uploaded image took too long to convert to WEBP. " if has_request:
"Consider uploading elsewhere.")) abort(413, ("An uploaded image took too long to convert to WEBP. "
return None "Consider uploading elsewhere."))
return None
if resize: if resize:
if os.stat(filename).st_size > MAX_IMAGE_SIZE_BANNER_RESIZED_KB * 1024: if os.stat(filename).st_size > MAX_IMAGE_SIZE_BANNER_RESIZED_KB * 1024:
@ -216,4 +217,6 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in
) )
db.add(media) db.add(media)
subprocess.run(["exiv2", "rm", filename], timeout=MAX_IMAGE_CONVERSION_TIMEOUT)
return filename return filename

View File

@ -1,6 +1,6 @@
apt -y update apt -y update
apt -y upgrade apt -y upgrade
apt -y install git redis-server python3-pip ffmpeg tmux nginx snapd ufw gpg-agent htop nano apt -y install git redis-server python3-pip ffmpeg tmux nginx snapd ufw gpg-agent htop nano exiv2
git config --global credential.helper store git config --global credential.helper store
cd /rDrama cd /rDrama