尝试进行一些图像处理,加载图像以显示在 Graph 上,但没有显示任何内容。Win10 / Python 3.7.6 / PySimpleGUI 4.16.0 / Numpy 1.18.1
我通过 PIL.Image 加载图像,将其转换为 numpy 数组,然后转换为 base64,Graph 中的 DrawImage,但什么也不显示。我已经为此工作了好几次,一切正常。检查了几个小时,但没有任何帮助。有人可以帮我找出我错过或错误的地方吗?
我发现的东西,
- 我打开了,im.show() OK
- im.shape 是正确的,例如 (200, 150, 3) 用于 150(宽度)x 200(高度)x RGB 图像。
- im_np 显示不同的数据,看起来还可以。
- im_64 显示字节串
- draw 是 None,它应该是一个 id。
- 为 DrawingImage 设置了文件名选项,就可以了
我需要在这里使用 numpy 进行一些图像处理,因此需要进行转换。
import base64
import numpy as np
import PySimpleGUI as sg
from PIL import Image
filename = 'D:/Disk.png'
im = Image.open(filename)
width, height = im.size
im_np = np.array(im) # It is necesary for future process
im_64 = base64.b64encode(im_np)
def Graph(key):
return sg.Graph(im.size, graph_bottom_left=(0, 0),
graph_top_right=(width, height), key=key)
layout = [[Graph('GRAPH')]]
window = sg.Window('Graph', layout=layout, finalize=True)
draw = window.FindElement('GRAPH').DrawImage(
data=im_64, location=(width/2, height/2)) # It failed
# filename=filename, location=(width/2, height/2)) # It working well
while True:
event, values = window.read()
if event == None:
break
window.close()