From b45b48f47509530aac190b9aef19a759d747a0c3 Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Tue, 19 Sep 2023 21:07:05 +0100 Subject: [PATCH] Use imagesize rather than magic --- README.md | 22 +++++----------------- gramps/gen/utils/image.py | 28 ++++------------------------ 2 files changed, 9 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 90307e9a56a..3bd7401dd3e 100644 --- a/README.md +++ b/README.md @@ -121,23 +121,11 @@ The following packages are optional: Python bindings of fontconfig are required for displaying genealogical symbols -* **magic** - - Python magic bindings required to have better performances with image - processing. - If this module is not available, we continue to use Gdk. - This avoid to load the image in memory. This is a real improvement - when we have many big images. - Used in odfdoc, rtfdoc and webreport and tested with png, gif, jpeg, bmp, tiff - # - # file size with magic without (Gdk) ratio - # example 1 : 256k 0.00080 0.00575 7 - # example 2 : 21M 0.00171 0.55860 326 - - Debian, Ubuntu, ... : python3-magic - Fedora, Redhat, ... : python3-magic - openSUSE : python-magic - ArchLinux : python-magic +* **python-imagesize** + + Provides better image processing performance. If this module is not available, + we continue to use Gdk. This provides a real improvement when we need to + process many big images. Optional packages required by Third-party Addons ------------------------------------------------ diff --git a/gramps/gen/utils/image.py b/gramps/gen/utils/image.py index 40a39b7d5e6..467b39a96b9 100644 --- a/gramps/gen/utils/image.py +++ b/gramps/gen/utils/image.py @@ -182,31 +182,11 @@ def image_size(source): from gi.repository import GLib try: - import re - import magic - - # For performance reasons, we'll try to get image size from magic. - # This avoid to load the image in memory. This is a real improvement - # when we have many big images. - # Used in odfdoc, rtfdoc and webreport and tested with png, gif, jpeg, - # bmp, tiff - # - # file size with magic without (Gdk) ratio - # example 1 : 256k 0.00080 0.00575 7 - # example 2 : 21M 0.00171 0.55860 326 - img = magic.from_file(source) - found = img.find("TIFF") - if found == 0: - width = re.search("width=(\d+)", img).groups() - height = re.search("height=(\d+)", img).groups() - return (int(width[0]), int(height[0])) - found = img.find("precision") - if found > 0: - img = img[found:] - size = re.search("(\d+)\s*x\s*(\d+)", img).groups() - return (int(size[0]), int(size[1])) + # For performance reasons, we'll try to get image size from imagesize. + import imagesize + return iamgesize.get(source) except (ImportError, FileNotFoundError): - # python-magic is not installed or the file does not exist. + # python-imagesize is not installed or the file does not exist. # So Trying to get image size with Gdk. try: img = GdkPixbuf.Pixbuf.new_from_file(source)