mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-07-28 18:24:38 -05:00
Feature: Allow user to control PIL image pixel limit (#5997)
This commit is contained in:
@@ -20,6 +20,7 @@ from documents.plugins.base import StopConsumeTaskError
|
||||
from documents.plugins.helpers import ProgressStatusOptions
|
||||
from documents.utils import copy_basic_file_stats
|
||||
from documents.utils import copy_file_with_basic_stats
|
||||
from documents.utils import maybe_override_pixel_limit
|
||||
|
||||
logger = logging.getLogger("paperless.barcodes")
|
||||
|
||||
@@ -81,6 +82,9 @@ class BarcodePlugin(ConsumeTaskPlugin):
|
||||
self.barcodes: list[Barcode] = []
|
||||
|
||||
def run(self) -> Optional[str]:
|
||||
# Some operations may use PIL, override pixel setting if needed
|
||||
maybe_override_pixel_limit()
|
||||
|
||||
# Maybe do the conversion of TIFF to PDF
|
||||
self.convert_from_tiff_to_pdf()
|
||||
|
||||
|
@@ -6,6 +6,7 @@ from django.conf import settings
|
||||
from PIL import Image
|
||||
|
||||
from documents.utils import copy_basic_file_stats
|
||||
from documents.utils import maybe_override_pixel_limit
|
||||
|
||||
|
||||
def convert_from_tiff_to_pdf(tiff_path: Path, target_directory: Path) -> Path:
|
||||
@@ -17,6 +18,9 @@ def convert_from_tiff_to_pdf(tiff_path: Path, target_directory: Path) -> Path:
|
||||
|
||||
Returns the path of the PDF created.
|
||||
"""
|
||||
# override pixel setting if needed
|
||||
maybe_override_pixel_limit()
|
||||
|
||||
with Image.open(tiff_path) as im:
|
||||
has_alpha_layer = im.mode in ("RGBA", "LA")
|
||||
if has_alpha_layer:
|
||||
|
@@ -1,8 +1,12 @@
|
||||
import shutil
|
||||
from os import utime
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from typing import Union
|
||||
|
||||
from django.conf import settings
|
||||
from PIL import Image
|
||||
|
||||
|
||||
def _coerce_to_path(
|
||||
source: Union[Path, str],
|
||||
@@ -40,3 +44,15 @@ def copy_file_with_basic_stats(
|
||||
|
||||
shutil.copy(source, dest)
|
||||
copy_basic_file_stats(source, dest)
|
||||
|
||||
|
||||
def maybe_override_pixel_limit() -> None:
|
||||
"""
|
||||
Maybe overrides the PIL limit on pixel count, if configured to allow it
|
||||
"""
|
||||
limit: Optional[Union[float, int]] = settings.MAX_IMAGE_PIXELS
|
||||
if limit is not None and limit >= 0:
|
||||
pixel_count = limit
|
||||
if pixel_count == 0:
|
||||
pixel_count = None
|
||||
Image.MAX_IMAGE_PIXELS = pixel_count
|
||||
|
Reference in New Issue
Block a user