Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite7e6343

Browse files
committed
Warn when pil_kwargs["pnginfo"] overrides metadata.
1 parente9891e2 commite7e6343

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

‎lib/matplotlib/backends/backend_agg.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -509,10 +509,9 @@ def print_png(self, filename_or_obj, *args,
509509

510510
ifmetadataisNone:
511511
metadata= {}
512-
metadata= {
512+
default_metadata= {
513513
"Software":
514514
f"matplotlib version{__version__}, http://matplotlib.org/",
515-
**metadata,
516515
}
517516

518517
FigureCanvasAgg.draw(self)
@@ -521,20 +520,24 @@ def print_png(self, filename_or_obj, *args,
521520
fromPIL.PngImagePluginimportPngInfo
522521
# Only use the metadata kwarg if pnginfo is not set, because the
523522
# semantics of duplicate keys in pnginfo is unclear.
524-
if"pnginfo"notinpil_kwargs:
525-
pnginfo=PngInfo()
526-
fork,vinmetadata.items():
527-
pnginfo.add_text(k,v)
528-
pil_kwargs["pnginfo"]=pnginfo
523+
ifmetadata:
524+
if"pnginfo"inpil_kwargs:
525+
cbook._warn_external("'metadata' is overridden by the "
526+
"'pnginfo' entry in 'pil_kwargs'.")
527+
else:
528+
pnginfo=PngInfo()
529+
fork,vin {**default_metadata,**metadata}.items():
530+
pnginfo.add_text(k,v)
531+
pil_kwargs["pnginfo"]=pnginfo
529532
pil_kwargs.setdefault("dpi", (self.figure.dpi,self.figure.dpi))
530533
(Image.fromarray(np.asarray(self.buffer_rgba()))
531534
.save(filename_or_obj,format="png",**pil_kwargs))
532535

533536
else:
534537
renderer=self.get_renderer()
535538
withcbook.open_file_cm(filename_or_obj,"wb")asfh:
536-
_png.write_png(renderer._renderer,fh,
537-
self.figure.dpi,metadata=metadata)
539+
_png.write_png(renderer._renderer,fh,self.figure.dpi,
540+
metadata={**default_metadata,**metadata})
538541

539542
defprint_to_buffer(self):
540543
FigureCanvasAgg.draw(self)

‎lib/matplotlib/image.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1539,13 +1539,16 @@ def imsave(fname, arr, vmin=None, vmax=None, cmap=None, format=None,
15391539
pil_shape= (rgba.shape[1],rgba.shape[0])
15401540
image=Image.frombuffer(
15411541
"RGBA",pil_shape,rgba,"raw","RGBA",0,1)
1542-
if (format=="png"
1543-
andmetadataisnotNoneand"pnginfo"notinpil_kwargs):
1542+
ifformat=="png"andmetadata:
15441543
# cf. backend_agg's print_png.
1545-
pnginfo=PngInfo()
1546-
fork,vinmetadata.items():
1547-
pnginfo.add_text(k,v)
1548-
pil_kwargs["pnginfo"]=pnginfo
1544+
if"pnginfo"inpil_kwargs:
1545+
cbook._warn_external("'metadata' is overridden by the "
1546+
"'pnginfo' entry in 'pil_kwargs'.")
1547+
else:
1548+
pnginfo=PngInfo()
1549+
fork,vinmetadata.items():
1550+
pnginfo.add_text(k,v)
1551+
pil_kwargs["pnginfo"]=pnginfo
15491552
ifformatin ["jpg","jpeg"]:
15501553
format="jpeg"# Pillow doesn't recognize "jpg".
15511554
color=tuple(

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp