Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1aa6047

Browse files
committed
Warn when pil_kwargs["pnginfo"] overrides metadata.
1 parent 39d84d7 commit 1aa6047

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

lib/matplotlib/backends/backend_agg.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -500,14 +500,6 @@ def print_png(self, filename_or_obj, *args,
500500
If the 'pnginfo' key is present, it completely overrides
501501
*metadata*, including the default 'Software' key.
502502
"""
503-
504-
if metadata is None:
505-
metadata = {}
506-
metadata = {
507-
"Software":
508-
f"matplotlib version{__version__}, http://matplotlib.org/",
509-
**metadata,
510-
}
511503
FigureCanvasAgg.draw(self)
512504
mpl.image.imsave(
513505
filename_or_obj, np.asarray(self.buffer_rgba()), format="png",

lib/matplotlib/image.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import numpy as np
1515
import PIL.PngImagePlugin
1616

17+
import matplotlib as mpl
1718
from matplotlib import rcParams
1819
import matplotlib.artist as martist
1920
from matplotlib.backend_bases import FigureCanvasBase
@@ -1509,14 +1510,22 @@ def imsave(fname, arr, vmin=None, vmax=None, cmap=None, format=None,
15091510
pil_shape = (rgba.shape[1], rgba.shape[0])
15101511
image = PIL.Image.frombuffer(
15111512
"RGBA", pil_shape, rgba, "raw", "RGBA", 0, 1)
1512-
if (format == "png"
1513-
and metadata is not None and "pnginfo" not in pil_kwargs):
1513+
if format == "png":
15141514
# Only use the metadata kwarg if pnginfo is not set, because the
15151515
# semantics of duplicate keys in pnginfo is unclear.
1516-
pnginfo = PIL.PngImagePlugin.PngInfo()
1517-
for k, v in metadata.items():
1518-
pnginfo.add_text(k, v)
1519-
pil_kwargs["pnginfo"] = pnginfo
1516+
if "pnginfo" in pil_kwargs:
1517+
if metadata:
1518+
cbook._warn_external("'metadata' is overridden by the "
1519+
"'pnginfo' entry in 'pil_kwargs'.")
1520+
else:
1521+
metadata = {
1522+
"Software": (f"matplotlib version{mpl.__version__}, "
1523+
f"http://matplotlib.org/"),
1524+
**(metadata if metadata is not None else {}),
1525+
}
1526+
pil_kwargs["pnginfo"] = pnginfo = PIL.PngImagePlugin.PngInfo()
1527+
for k, v in metadata.items():
1528+
pnginfo.add_text(k, v)
15201529
if format in ["jpg", "jpeg"]:
15211530
format = "jpeg" # Pillow doesn't recognize "jpg".
15221531
color = tuple(

0 commit comments

Comments
 (0)