Skip to content

Commit 485c0ef

Browse files
committed
Fixed an issue with images that use palette color mode (mode P).
1 parent a2083b5 commit 485c0ef

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

particleanalyzer/core/StatisticsBuilder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ def _create_vector_field_fig(self, df, image):
350350
)
351351

352352
return vector_fig
353-
353+
354354
def _add_vector_field_to_fig(self, fig, df, image):
355355
image = np.flipud(image)
356356

particleanalyzer/core/utils.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -480,20 +480,22 @@ def img_to_numpy_array(file_path, max_size_kb=500, quality=85):
480480
try:
481481
with Image.open(file_path) as img:
482482
img_byte_arr = io.BytesIO()
483-
img.save(img_byte_arr, format="JPEG", quality=quality, optimize=True)
483+
484+
img.save(img_byte_arr, format="PNG", optimize=True)
484485

485486
current_size_kb = len(img_byte_arr.getvalue()) / 1024
486487

487-
while current_size_kb > max_size_kb and quality > 10:
488-
quality -= 10
488+
if current_size_kb > max_size_kb:
489+
ratio = (max_size_kb / current_size_kb) ** 0.5
490+
new_size = (int(img.size[0] * ratio), int(img.size[1] * ratio))
491+
img = img.resize(new_size, Image.Resampling.LANCZOS)
492+
489493
img_byte_arr = io.BytesIO()
490-
img.save(img_byte_arr, format="JPEG", quality=quality, optimize=True)
491-
current_size_kb = len(img_byte_arr.getvalue()) / 1024
494+
img.save(img_byte_arr, format="PNG", optimize=True)
492495

493496
img_byte_arr.seek(0)
494497
compressed_img = Image.open(img_byte_arr)
495498

496-
# print(f"Сжато до: {current_size_kb:.1f}KB, качество: {quality}")
497499
return np.array(compressed_img)
498500

499501
except (IOError, OSError, ValueError) as e:

particleanalyzer/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "1.2.0"
1+
__version__ = "1.2.1"

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def read_file(filename):
99

1010
setup(
1111
name="ParticleAnalyzer",
12-
version="1.2.0",
12+
version="1.2.1",
1313
packages=find_packages(exclude=["tests*"]),
1414
package_data={
1515
"particleanalyzer": [

0 commit comments

Comments
 (0)