#python #matplotlib
#python #matplotlib
Вопрос:
Я хочу преобразовать изображение, созданное с помощью pyplot, в байты и записать эти байты в файл, чтобы сохранить мой график в виде изображения на моем компьютере.
По посторонним причинам я не могу использовать savefig
для сохранения графика непосредственно в файле
Со всей информацией, полученной в Интернете, и из других вопросов я пришел к этому моменту:
plt.hist(arg)
plt.show()
bio = BytesIO()
plt.savefig(bio, format="png")
# bio.seek(0)
# print(bio.read()) FIRST print
bio.seek(0)
my_base64_jpgData = base64.b64encode(bio.read())
result["image"] = my_base64_jpgData
И в конце моего кода я делаю следующее:
result = handler(input)
file = open("image.png", "wb")
# print(base64.b64decode(result["image"])) SECOND print
file.write(base64.b64decode(result["image"]))
file.close()
Проблема, с которой я сталкиваюсь, заключается в том, что и первая, и вторая печать печатают одно и то же, но очевидно, что если я запишу это в файл, файл будет полностью белым, потому что в нем есть некоторая ненужная информация, фактически это то, что возвращают две печати:
b'x89PNGrnx1anx00x00x00rIHDRx00x00x02x80x00x00x01xe0x08x06x00x00x005xd1xdcxe4x00x00x009tEXtSoftwarex00Matplotlib version3.3.1, https://matplotlib.org/xddxddxfcxf3x00x00x00tpHYsx00x00x0fax00x00x0fax01xa8?xa7ix00x00x08xc9IDATxx9cxedxd61x01x00 x0cxc00xc0xbfxe7xe1x02x8eamp;nzvxcfxcc,x00x002xcexefx00x00x00xde2x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00bx0c x00@x8cx01x04x00x881x80x00x001x06x10x00 xc6x00x02x00xc4x18@x00x80x18x03x08x00x10cx00x01x00b.amp;yx07xbcxa7xa7xb2bx00x00x00x00IENDxaeB`x82'
Как вы можете видеть, почти сразу появляется, 0x00x009tEXtSoftwarex00Matplotlib version3.3.1, https://matplotlib.org/xddxdd
и я думаю, что для этого изображение, image.png
которое создает мой код, является белым изображением.
Вы знаете, как я могу решить эту проблему?
Ответ №1:
Я сам нахожу, как решить проблему (но я не понимаю, почему это работает), я надеюсь, что это поможет кому-то в будущем.
Проблема в «просто» строке plt.show()
, удалив эту строку, она будет работать правильно.