簡體   English   中英

Reportlab - 倒置圖像

[英]Reportlab - inverted image

我正在嘗試使用drawImage()函數在我的 ReportLab canvas 中顯示一些 png 圖片,但它將圖片顯示為倒置。

原圖: 在此處輸入圖像描述

報告中的圖片: 在此處輸入圖像描述

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, landscape, A4
from reportlab.lib.utils import ImageReader

fig = plt.figure()
#fig.patch.set_facecolor('#0c1c33')
#fig.patch.set_alpha(1)
data = [10,30,25,15,10]
plt.pie(data, labels = ['A', 'B', 'C', 'D', 'E'])
circle = plt.Circle( (0,0), 0.7, color='#0c1c33')
p = plt.gcf()
p.gca().add_artist(circle)
plt.savefig('test_donut.png')
plt.show()

my_canvas = canvas.Canvas("Test_Rapport.pdf",pagesize=(landscape(A4)),bottomup=0)
my_canvas.drawImage(ImageReader('test_donut.png'), 300, 150, width=200, height=150)
my_canvas.save()

你知道我該如何解決這個問題嗎? 提前感謝您的幫助和您的時間

它與 canvas 坐標系有關。 有時您需要使用 bottomup=1 來讓 drawImage() 按需要工作,但如果您已經為 bottomup=0 上的其他元素設計了坐標,那么如果您更改 bottomup,文本和其他所有內容都不會出現在應有的位置為 1。

這是您可以嘗試的修復程序(以這種方式縮放 canvas 會強制圖像翻轉回應有的狀態,但 y 值需要為負值才能使圖像在 A4 頁面上可見):

my_canvas = canvas.Canvas("Test_Rapport.pdf",pagesize=(landscape(A4)),bottomup=0)

my_canvas.saveState()
my_canvas.scale(1,-1)
x_val = 300
y_val = -150
my_canvas.drawImage(ImageReader('test_donut.png'), x_val, y_val, width=200, height=150)
my_canvas.restoreState()

my_canvas.save()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM