1.UIImage轉(zhuǎn)base64兼容問題
最近項(xiàng)目使用的UIImage轉(zhuǎn)base64 String上傳到后臺(tái)。使用UIImage轉(zhuǎn)NSData再轉(zhuǎn)base64 String上傳到后臺(tái)一直失敗。iOS自身用一直沒問題,后來搜索說UIImage改變了data結(jié)構(gòu)。
2.將UIImage寫會(huì)到文件,使用NSData直接讀取。
創(chuàng)建UIImage Category 方法。
- (NSString *)base64String {
NSData *imageData = nil;
NSString *mimeType = nil;
NSString *suffix = nil ;
if ([self imageHasAlpha]) {
imageData = UIImagePNGRepresentation(self);
mimeType = @"image/png";
suffix = @".png" ;
} else {
imageData = UIImageJPEGRepresentation(self, 0.5f);
mimeType = @"image/jpeg";
suffix = @".jpeg" ;
}
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject] ;
NSString *fileName = [filePath stringByAppendingFormat:@"/temp%@", suffix] ;
[imageData writeToFile:fileName atomically:YES] ;
NSData *data = [NSData dataWithContentsOfFile:fileName] ;
NSString *base64String = [NSString stringWithFormat:@"data:%@;base64,%@", mimeType,
[data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]];
NSFileManager *fileManager = [NSFileManager defaultManager] ;
if ([fileManager fileExistsAtPath:fileName]) {
[fileManager removeItemAtPath:filePath error:nil] ;
}
//+號(hào)必須替換為%2B,要不然同樣會(huì)失敗!
base64String = [base64String stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"] ;
return base64String ;
}