2012-02-05 3 views
2

Мне нужно включить изображение в файл vcard. Изображение должно быть в двоичном формате. Я создаю данные изображения следующим образом:Преобразование данных изображения в двоичный текст для vcard

NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"Pic1"], 1.0); 

Я безуспешно пытался кодирование с помощью следующих 2 метода:

vcardString = [vcardString stringByAppendingFormat:@"PHOTO;ENCODING=b;TYPE=JPEG:%@\n", [imageData base64EncodedString]]; 

И

vcardString = [vcardString stringByAppendingFormat:@"PHOTO;ENCODING=b;TYPE=JPEG:%@\n", [imageData description]]; 

Любые советы о том, как получить данные изображения должным образом закодированный в двоичный код. Спасибо

+0

Вы получили решение по этой проблеме? Мне нужна помощь по той же проблеме. –

ответ

1

Согласно to this blog entry I found (что указывает на this spec), похоже, что вторая форма того, что вы пытаетесь сделать, должна работать.

Измените свой ENCODING=b на ENCODING=BASE64 и посмотрите, не имеет значения.

+0

К сожалению, это не сработает. Изображение все еще не распознается, когда vcard импортируется в адресную книгу. Я вижу, что в спецификациях более 75 символов должны быть «свернуты» в соответствии с [MIME-DIR], но понятия не имеют, что это значит. – RunLoop

+2

@RunLoop Это означает, что каждая строка в файле должна быть 75 символов. Чтобы указать, что следующая строка является продолжением, отпечатайте ее * одним пробелом *. Эффективно вы получаете 75 символов контента в первой строке, а затем кучу строк с пробелом и 74 символами содержимого. См. [VCard validator] (https://github.com/l0b0/vCard-module) (отказ от ответственности: я автор). – l0b0

+0

@ l0b0 В конце концов я понял это примерно час назад после нескольких часов борьбы. Если бы только я нашел вашу статью раньше. Спасибо за сообщение, хотя :) – RunLoop

1

OS X v10.11 и iOS 9 представляет CNContactVCardSerialization, что значительно упрощает встраивание изображений в VCard.

+0

@ Jesper Christensen даёт null –