Похоже, что вы пишете строку 'default.jpg'
в поле фотографии, когда на самом деле вам нужно написать изображение в кодировке base64. Вы можете сделать это с помощью такой функции:
import base64
def b64_image(filename):
with open(filename, 'rb') as f:
b64 = base64.b64encode(f.read())
return b64.decode('utf-8')
Затем вызвать ее как:
o = vcard.add('PHOTO;ENCODING=b;TYPE=image/jpeg')
o.value = b64_image('default.jpg')
Очевидно, передайте этой функции правильный путь к файлу изображения, который в вашем случае может быть rowr.img_url
.
Этот формат основан на спецификации формата vCard .
При тестировании в файле vcf
создается строка, которая выглядит следующим образом:
PHOTO;ENCODING=B;TYPE=IMAGE/JPEG:iVBORw0KGgoAAA...........
Я открыл это в Contacts v12.0 на OSx, и он отображает мой пример изображения: