如何解决将matplotlib图插入pdf文件
我正在尝试通过多种方法使用FPDF将matplotlib中的图插入到pdf文件中。仅通过将图像保存到文件并将其插入pdf即可轻松完成该任务。都一样,我想直接插入图而不将其另存为文件。这个问题已经在Stack这里完成了,但是没有一个答案对我有用。下面的代码显示了我尝试过的一些不同方法:
此代码仅用于matplotlib图:
with open('altitud.txt','r') as f:
elevations = json.loads(f.read())
altitud_data = list(itertools.chain.from_iterable(elevations))
x_data = [(0.269978*x) for x in range(0,len(altitud_data))]
plt.plot(x_data,altitud_data,color='green',lw=2)
plt.fill_between(x_data,facecolor="green")
plt.title('VISTA RUTA VERTICAL')
plt.xlabel('XX')
plt.ylabel('YY')
Firs方法:
with io.BytesIO() as output:
plt.savefig(output,format="png")
contents = output.getvalue()
im = Image.frombuffer("I;16",(5,10),contents,"raw","I;12")
pdf = FPDF()
pdf.add_page()
pdf.image(im,h=70,w=150,x=30,y=100,type="png")
pdf.output('imge_example.pdf','F')
第二种方法:
import io
from PIL import Image
with io.BytesIO() as output:
plt.savefig(output,format="png")
contents = output.getvalue()
img = Image.frombytes("RGBA",(10,contents)
outf = io.BytesIO()
img.save(outf,"PNG",optimize=True)
data = outf.getvalue()
pdf = FPDF()
pdf.add_page()
pdf.image(data,'F')
第三种方法:
import io
from PIL import Image
with io.BytesIO() as output:
plt.savefig(output,format="png")
contents = output.getvalue()
stream = BytesIO(contents)
image = Image.open(stream).convert("RGBA")
pdf = FPDF()
pdf.add_page()
pdf.image(image,'F')
最后使用base64:
img = BytesIO()
plt.savefig(img,format='png')
img.seek(0)
base_64 = base64.b64encode(img.read())
img = base64.b64decode(base_64)
stream = BytesIO(img)
image = Image.open(stream).convert("RGBA")
stream.close()
pdf = FPDF()
pdf.add_page()
pdf.image(image,'F')
如果有人对如何实现有任何想法或线索。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。