黑莓 10 联系人图片到字节数组
Blackberry 10 contact pic to byte array
我正在处理移民申请。我必须将 blackberry 10 联系人转移到 android。
我在传输联系人照片时遇到问题。我正在获取图片的 uri,创建文件并尝试读取字节。
ContactPhoto contactPhoto = contact.primaryPhoto();
QString photo = contactPhoto.originalPhoto();
//photo = file:///accounts/1000/pimdata/_startup_data/contacts/2/img-tnqpx0.jpg
if (!photo.isEmpty()){
QFile file(photo);
if (file.open(QIODevice::ReadOnly)) {
qDebug() <<"file.readAll() IF" <<file.readAll() <<endl;
}else{
qDebug() <<"file.readAll() ELSE" <<endl;
}
vcardString += "PHOTO;JPEG;ENCODING=BASE64:" + (file.readAll() + "\n");
}
但下面的部分代码正在执行
if (file.open(QIODevice::ReadOnly)) {
qDebug() <<"file.readAll() IF" <<file.readAll() <<endl;
}else{
qDebug() <<"file.readAll() ELSE" <<endl;
}
我如何从 uri 下面读取字节
file:///accounts/1000/pimdata/_startup_data/contacts/2/img-tnqpx0.jpg
如我所料,从 url 中删除 file://
有效。
这是我用来测试的代码:
bb::pim::contacts::ContactPhoto contactPhoto = contact.primaryPhoto();
QString photo = contactPhoto.originalPhoto();
if (!photo.isEmpty()){
QFile file(photo.remove("file://"));
if (file.open(QIODevice::ReadOnly)) {
qDebug() <<"file.readAll() IF" <<file.readAll() <<endl;
}else{
qDebug() <<"file.readAll() ELSE" <<endl;
}
}
请注意,您需要在 url 前面留一个 /
,这样您在 OP 中分享的图片 url 将如下所示:
/accounts/1000/pimdata/_startup_data/contacts/2/img-tnqpx0.jpg
此外,如果您的目标是创建一个VCard vcf文件,您不需要手动创建VCard文件内容,甚至不需要读取照片文件的字节,contactToVCard
功能会为你做到这一点。
QByteArray vcard = contactService.contactToVCard(contact.id(), bb::pim::contacts::VCardPhotoEncoding::BASE64, -1);
qDebug() << "vcard:" << vcard;
我正在处理移民申请。我必须将 blackberry 10 联系人转移到 android。
我在传输联系人照片时遇到问题。我正在获取图片的 uri,创建文件并尝试读取字节。
ContactPhoto contactPhoto = contact.primaryPhoto();
QString photo = contactPhoto.originalPhoto();
//photo = file:///accounts/1000/pimdata/_startup_data/contacts/2/img-tnqpx0.jpg
if (!photo.isEmpty()){
QFile file(photo);
if (file.open(QIODevice::ReadOnly)) {
qDebug() <<"file.readAll() IF" <<file.readAll() <<endl;
}else{
qDebug() <<"file.readAll() ELSE" <<endl;
}
vcardString += "PHOTO;JPEG;ENCODING=BASE64:" + (file.readAll() + "\n");
}
但下面的部分代码正在执行
if (file.open(QIODevice::ReadOnly)) {
qDebug() <<"file.readAll() IF" <<file.readAll() <<endl;
}else{
qDebug() <<"file.readAll() ELSE" <<endl;
}
我如何从 uri 下面读取字节
file:///accounts/1000/pimdata/_startup_data/contacts/2/img-tnqpx0.jpg
如我所料,从 url 中删除 file://
有效。
这是我用来测试的代码:
bb::pim::contacts::ContactPhoto contactPhoto = contact.primaryPhoto();
QString photo = contactPhoto.originalPhoto();
if (!photo.isEmpty()){
QFile file(photo.remove("file://"));
if (file.open(QIODevice::ReadOnly)) {
qDebug() <<"file.readAll() IF" <<file.readAll() <<endl;
}else{
qDebug() <<"file.readAll() ELSE" <<endl;
}
}
请注意,您需要在 url 前面留一个 /
,这样您在 OP 中分享的图片 url 将如下所示:
/accounts/1000/pimdata/_startup_data/contacts/2/img-tnqpx0.jpg
此外,如果您的目标是创建一个VCard vcf文件,您不需要手动创建VCard文件内容,甚至不需要读取照片文件的字节,contactToVCard
功能会为你做到这一点。
QByteArray vcard = contactService.contactToVCard(contact.id(), bb::pim::contacts::VCardPhotoEncoding::BASE64, -1);
qDebug() << "vcard:" << vcard;