| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -563,23 +563,25 @@ def print_jpg(self, filename_or_obj, *args, dryrun=False, pil_kwargs=None, | |||
| 563 | 563 | `PIL.Image.save` when saving the figure. These take precedence | |
| 564 | 564 | over *quality*, *optimize* and *progressive*. | |
| 565 | 565 | """ | |
| 566 | - FigureCanvasAgg.draw(self) | ||
| 566 | + # Remove transparency by alpha-blending on an assumed white background. | ||
| 567 | + r, g, b, a = mcolors.to_rgba(self.figure.get_facecolor()) | ||
| 568 | + try: | ||
| 569 | + self.figure.set_facecolor(a * np.array([r, g, b]) + 1 - a) | ||
| 570 | + FigureCanvasAgg.draw(self) | ||
| 571 | + finally: | ||
| 572 | + self.figure.set_facecolor((r, g, b, a)) | ||
| 567 | 573 | if dryrun: | |
| 568 | 574 | return | |
| 569 | - # The image is "pasted" onto a white background image to safely | ||
| 570 | - # handle any transparency | ||
| 571 | - image = Image.fromarray(np.asarray(self.buffer_rgba())) | ||
| 572 | - background = Image.new("RGB", image.size, "white") | ||
| 573 | - background.paste(image, image) | ||
| 574 | 575 | if pil_kwargs is None: | |
| 575 | 576 | pil_kwargs = {} | |
| 576 | 577 | for k in ["quality", "optimize", "progressive"]: | |
| 577 | 578 | if k in kwargs: | |
| 578 | 579 | pil_kwargs.setdefault(k, kwargs[k]) | |
| 579 | 580 | pil_kwargs.setdefault("quality", rcParams["savefig.jpeg_quality"]) | |
| 580 | 581 | pil_kwargs.setdefault("dpi", (self.figure.dpi, self.figure.dpi)) | |
| 581 | - return background.save( | ||
| 582 | - filename_or_obj, format='jpeg', **pil_kwargs) | ||
| 582 | + # Drop alpha channel now. | ||
| 583 | + return (Image.fromarray(np.asarray(self.buffer_rgba())[..., :3]) | ||
| 584 | + .save(filename_or_obj, format='jpeg', **pil_kwargs)) | ||
| 583 | 585 | ||
| 584 | 586 | print_jpeg = print_jpg | |
| 585 | 587 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments