@@ -1520,14 +1520,22 @@ def imsave(fname, arr, vmin=None, vmax=None, cmap=None, format=None,
15201520 pil_shape = (rgba .shape [1 ], rgba .shape [0 ])
15211521 image = PIL .Image .frombuffer (
15221522 "RGBA" , pil_shape , rgba , "raw" , "RGBA" , 0 , 1 )
1523- if (format == "png"
1524- and metadata is not None and "pnginfo" not in pil_kwargs ):
1523+ if format == "png" :
15251524 # Only use the metadata kwarg if pnginfo is not set, because the
15261525 # semantics of duplicate keys in pnginfo is unclear.
1527- pnginfo = PIL .PngImagePlugin .PngInfo ()
1528- for k , v in metadata .items ():
1529- pnginfo .add_text (k , v )
1530- pil_kwargs ["pnginfo" ] = pnginfo
1526+ if "pnginfo" in pil_kwargs :
1527+ if metadata :
1528+ cbook ._warn_external ("'metadata' is overridden by the "
1529+ "'pnginfo' entry in 'pil_kwargs'." )
1530+ else :
1531+ metadata = {
1532+ "Software" : (f"Matplotlib version{ mpl .__version__ } , "
1533+ f"https://matplotlib.org/" ),
1534+ ** (metadata if metadata is not None else {}),
1535+ }
1536+ pil_kwargs ["pnginfo" ] = pnginfo = PIL .PngImagePlugin .PngInfo ()
1537+ for k , v in metadata .items ():
1538+ pnginfo .add_text (k , v )
15311539 if format in ["jpg" , "jpeg" ]:
15321540 format = "jpeg" # Pillow doesn't recognize "jpg".
15331541 facecolor = mpl .rcParams ["savefig.facecolor" ]
0 commit comments