Изображение и csv
В общем нужно сохранить картинку в ячейку в файл формата csv.
Догадываюсь, что дело в кодировках, но не могу понять синтаксис.
Помещаю картинку в label:
label_3.setPixmap(QPixmap(self.pixmap))
Потом я ее помещаю в буфер:
buffer = QtCore.QBuffer()
pixmap.save(buffer, 'jpg')
stamp_data = buffer.data().Base64Encoding
Eсли с методом Base64Encoding, то записывается 0 в ячейку, если без него, - то куча символов (я так понимаю картинка в кодировке).
Запись делаю в файл вот так:
with open("file_name.csv", "a", newline='') as f:
writer = csv.writer(f, delimiter=";")
for row in spisok_znachenii:
writer.writerow(row)
print(row)
Когда открываю записанный файл, то либо 0, либо куча символов, но нужна картинка.
В целом и общем объясните, как вообще можно положить картинку в ячейку csv или xls.
Ответы (1 шт):
Автор решения: Alexander Chernin
→ Ссылка
Помещение картинки в буфер:
pixmap = QPixmap('<исходное изображение>')
buffer = QBuffer()
pixmap.save(buffer, 'jpg')
# toBase64()
stamp_data = buffer.data().toBase64()
Запись в csv-файл
file = QFile("<filename>.csv")
if file.open(QFile.WriteOnly)):
csv = QTextStream(&file)
csv << stamp_data
file.close()
Чтение из csv:
file = QFile("<filename>.csv")
if file.open(QFile.ReadOnly)):
stream = QTextStream(file)
image_data_from_csv = stream.readLine()
pixData = QByteArray.fromBase64(image_data_from_csv)
pixmap = QPixmap()
pixmap.loadFromData(pixData)
# pixmap.save('<результирующая картинка>')
# должна быть такой же как исходная картинка
file.close()