Я написал программу, которая преобразует.jpg изображение в base64. Теперь я хочу записать их в файл csv. Чтобы один столбец имел имя файла (строка), другой столбец имеет преобразованное изображение (байты). Как мне это достичь. До сих пор я писал ниже коды.
from PIL import Image
import os
import base64
import csv
def main():
array=[]
pic_name=[]
#opens file in listed directory
for f in os.listdir('./jpg_Images'):
if f.endswith('.jpg'):
#making a list of a filename
pic_name.append(f)
#joining the path
xpath = os.path.join ('./jpg_Images',f)
#open .jpg file in Binary mode
image = open(xpath, 'rb')
#open binary file in read mode
image_read = image.read()
#encode the image
image_64_encode = base64.encodebytes(image_read)
#making the list of encoded image
array.append(image_64_encode)
with open('convert.csv', 'w') as f:
writer = csv.writer(f)
writer.writerows(zip(array, pic_name))
f.close()
if __name__ == '__main__':
main()
К счастью, закодированные байтовые строки base64 могут быть декодированы в unicode без потери точности. base64 декодирует для печатных (и неэкранированных) символов из диапазона ASCI. Просто измените строку:
array.append(image_64_encode)
чтобы:
array.append(image_64_encode.decode())