2015-12-01 25 views
3

我使用XMPPFramework來創建我的聊天應用程序。我想更新當前用戶的頭像。我爲此使用了ImagePicker。以下是我的updateAvatar方法的樣子 -使用XMPPFramework上傳的電子名片上圖像變得難以辨識

- (void)updateAvatar:(UIImage *)avatar 
{ 
    NSData *imageData = UIImageJPEGRepresentation(avatar, 0.5f); 
    imageData = [imageData base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength]; 
    dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_PRIORITY_DEFAULT); 
    dispatch_async(queue, ^{ 
     XMPPvCardTempModule *vCardTempModule = self.xmppvCardTempModule; 
     XMPPvCardTemp *myVcardTemp = [vCardTempModule myvCardTemp]; 
     if (!myVcardTemp) 
     { 
      NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard" xmlns:@"vcard-temp"]; 
      myVcardTemp = [XMPPvCardTemp vCardTempFromElement:vCardXML]; 
     } 
     //[myVcardTemp setName:[NSString stringWithFormat:@"%@",name.text]]; 
     [myVcardTemp setPhoto:imageData]; 

     [vCardTempModule updateMyvCardTemp:myVcardTemp]; 

    }); 
} 

但是,當我將vCard取回時,圖像變爲無效圖像。我已經檢查了this question。它在vCard上使用setPhoto方法時手動創建vCard元素。我也嘗試過使用UIImagePNGRepresentation,但它也不起作用。

任何想法在這裏可能是錯誤的?

回答

2

貌似我只需要做到這一點 -

NSData *imageData1 = UIImageJPEGRepresentation(avatar,0.0); 


XMPPvCardTemp *myvCardTemp = [self.xmppvCardTempModule myvCardTemp]; 

if (myvCardTemp) { 
    [myvCardTemp setPhoto:imageData1]; 
    [self.xmppvCardTempModule updateMyvCardTemp:myvCardTemp]; 
} 

轉換爲Base64都沒有要求。

3

是你用這行覆蓋你的imageData對象??

imageData = [imageData base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength]; 

使用另一個NSData來包裝base64encoded數據,否則結果是不可預知的。