我需要一点帮助。我有一个用 matplotlib 生成的图表,最后一个要求是在图表上显示公司徽标(.PNG 文件)。但是,我不能将 Python 图像库 (PIL) 用于此任务,因此我使用 pypng 来读取徽标,但是经过大量搜索后,我找不到将图像转换为 matplotlib“兼容”图像以与 figmimage 一起使用的方法(在图表上覆盖徽标)。
pypng 文档展示了如何使用 numpy 转换图像以与 matplotlib 一起使用,但他们的示例是 Python 2.x,我不知道如何转换示例(itertools.imap)以与 Python 3 一起使用)。
这是我到目前为止所拥有的:
import png
import numpy
from matplotlib.figure import Figure
fig = Figure(figsize=(8.5, 4.1))
r = png.Reader('/home/jm/Desktop/logo.png')
r.read()
rows, cols, pngdata, d = r.asFloat()
rows=28, cols=500, d['planes']=4 有 500 列,因为我认为 png 是 RGBA 格式,即。每像素行 4 个值。
# My poor attempt to map the pypng image to numpy
img = numpy.reshape(pngdata, (rows, cols, d['planes']))
fig.figimage(img, 0, 0)
如果您想知道,我会在图表上看到垃圾像素......我已经阅读了文档,但我显然遗漏了一些东西,但我不知道是什么。
任何帮助,将不胜感激!
谢谢,
杰米