2013-06-19 36 views
2

假設我有一個UIImage實例,我想轉換成數據URI並注入到UIWebView.轉換一個UIImage到數據URI

我知道我可以的UIImage轉換成PNG/JPEG NSData使用PNGRepresentation/JPEGRepresentation方法。但是,如何確保轉換是base64?然後,我如何創建一個包含實際URI和標題的字符串?

回答

1

從中創建NSData不會編碼到基址64. NSData是一個二進制數據(字節,範圍爲0-255); base 64 encoding是一種文本編碼,它使用ASCII的一個子集來表示字節值。你想要做的是創建NSData,然後使用轉換例程將其編碼爲基本64字符串;有很多這樣做的參考。獲得base64字符串後,使用標準方法將圖像數據插入到HTML中。

6

這裏是UIImage的一個類別我用它來做到這一點:

- (BOOL)hasAlpha 
{ 
    CGImageAlphaInfo alpha = CGImageGetAlphaInfo(self.CGImage); 
    return (alpha == kCGImageAlphaFirst || 
      alpha == kCGImageAlphaLast || 
      alpha == kCGImageAlphaPremultipliedFirst || 
      alpha == kCGImageAlphaPremultipliedLast); 
} 

- (NSString *)dataURL 
{ 
    NSData *imageData = nil; 
    NSString *mimeType = nil; 

    if (self.hasAlpha) { 
     imageData = UIImagePNGRepresentation(self); 
     mimeType = @"image/png"; 
    } else { 
     imageData = UIImageJPEGRepresentation(self, 1.0); 
     mimeType = @"image/jpeg"; 
    } 

    return [NSString stringWithFormat:@"data:%@;base64,%@", mimeType, [imageData base64EncodedStringWithOptions:0]]; 
} 

這需要iOS 7的數據編碼爲base64,但也有第三方庫做同樣的事情。

+0

這對我工作感謝! – jonbauer

+0

這也適用於我,感謝它! – jonbauer