[英]Python Reportlab insert image base64 colors are being inverted
[英]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.