From f71697b6db2ea815a12697df06d7a1f5bb09c60a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= Date: Sat, 19 Jul 2025 23:04:11 +0200 Subject: [PATCH] python libheif --- Dockerfile | 10 ---------- app.py | 22 ++++++++++------------ requirements.txt | 2 +- 3 files changed, 11 insertions(+), 23 deletions(-) diff --git a/Dockerfile b/Dockerfile index c027e91..7f44721 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,6 @@ # Używamy lekkiego obrazu Pythona FROM python:3.13-slim -# Zależności systemowe wymagane do pyheif -RUN apt-get update && apt-get install -y \ - gcc \ - libffi-dev \ - libheif-dev \ - libde265-dev \ - python3-dev \ - build-essential \ - && rm -rf /var/lib/apt/lists/* - # Ustawiamy katalog roboczy WORKDIR /app diff --git a/app.py b/app.py index c40de25..08e1f8f 100644 --- a/app.py +++ b/app.py @@ -6,7 +6,7 @@ import mimetypes import sys import platform import psutil -import pyheif # zdjecia heic +from pillow_heif import register_heif_opener from datetime import datetime, timedelta, UTC, timezone @@ -48,6 +48,7 @@ from functools import wraps app = Flask(__name__) app.config.from_object(Config) +register_heif_opener() # pillow_heif dla HEIC ALLOWED_EXTENSIONS = {"png", "jpg", "jpeg", "gif", "webp", "heic"} SQLALCHEMY_ECHO = True @@ -242,19 +243,16 @@ def enrich_list_data(l): l.total_expense = sum(e.amount for e in expenses) return l - def save_resized_image(file, path): - if file.filename.lower().endswith(".heic"): - heif_file = pyheif.read_heif(file.read()) - image = Image.frombytes( - heif_file.mode, heif_file.size, heif_file.data, "raw" - ) - image.save(path.replace(".heic", ".jpg"), format="JPEG") - else: - image = Image.open(file) - image.thumbnail((2000, 2000)) - image.save(path) + image = Image.open(file) + image.thumbnail((2000, 2000)) + if image.format == "HEIF": + path = path.rsplit(".", 1)[0] + ".jpg" + image = image.convert("RGB") + image.save(path, format="JPEG") + else: + image.save(path) def redirect_with_flash( message: str, category: str = "info", endpoint: str = "main_page" diff --git a/requirements.txt b/requirements.txt index 224d8be..15f3aa5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,4 +7,4 @@ eventlet Werkzeug Pillow psutil -pyheif \ No newline at end of file +pillow-heif \ No newline at end of file