@@ -1520,14 +1520,22 @@ def imsave(fname, arr, vmin=None, vmax=None, cmap=None, format=None,
1520
1520
pil_shape = (rgba .shape [1 ], rgba .shape [0 ])
1521
1521
image = PIL .Image .frombuffer (
1522
1522
"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" :
1525
1524
# Only use the metadata kwarg if pnginfo is not set, because the
1526
1525
# 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 )
1531
1539
if format in ["jpg" , "jpeg" ]:
1532
1540
format = "jpeg" # Pillow doesn't recognize "jpg".
1533
1541
facecolor = mpl .rcParams ["savefig.facecolor" ]
0 commit comments