|
14 | 14 | import numpy as np
|
15 | 15 | import PIL.PngImagePlugin
|
16 | 16 |
|
| 17 | +import matplotlib as mpl |
17 | 18 | from matplotlib import rcParams
|
18 | 19 | import matplotlib.artist as martist
|
19 | 20 | from matplotlib.backend_bases import FigureCanvasBase
|
@@ -1509,14 +1510,22 @@ def imsave(fname, arr, vmin=None, vmax=None, cmap=None, format=None,
|
1509 | 1510 | pil_shape = (rgba.shape[1], rgba.shape[0])
|
1510 | 1511 | image = PIL.Image.frombuffer(
|
1511 | 1512 | "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": |
1514 | 1514 | # Only use the metadata kwarg if pnginfo is not set, because the
|
1515 | 1515 | # 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) |
1520 | 1529 | if format in ["jpg", "jpeg"]:
|
1521 | 1530 | format = "jpeg" # Pillow doesn't recognize "jpg".
|
1522 | 1531 | color = tuple(
|
|
0 commit comments