假設我有一個UIImage
實例,我想轉換成數據URI並注入到UIWebView.
轉換一個UIImage到數據URI
我知道我可以的UIImage轉換成PNG/JPEG NSData
使用PNGRepresentation
/JPEGRepresentation
方法。但是,如何確保轉換是base64?然後,我如何創建一個包含實際URI和標題的字符串?
假設我有一個UIImage
實例,我想轉換成數據URI並注入到UIWebView.
轉換一個UIImage到數據URI
我知道我可以的UIImage轉換成PNG/JPEG NSData
使用PNGRepresentation
/JPEGRepresentation
方法。但是,如何確保轉換是base64?然後,我如何創建一個包含實際URI和標題的字符串?
從中創建NSData不會編碼到基址64. NSData是一個二進制數據(字節,範圍爲0-255); base 64 encoding是一種文本編碼,它使用ASCII的一個子集來表示字節值。你想要做的是創建NSData,然後使用轉換例程將其編碼爲基本64字符串;有很多這樣做的參考。獲得base64字符串後,使用標準方法將圖像數據插入到HTML中。
這裏是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,但也有第三方庫做同樣的事情。
這對我工作感謝! – jonbauer
這也適用於我,感謝它! – jonbauer