iOS UIimage转base64兼容问题

1.UIImage转base64兼容问题

最近项目使用的UIImage转base64 String上传到后台。使用UIImage转NSData再转base64 String上传到后台一直失败。iOS自身用一直没问题,后来搜索说UIImage改变了data结构。

2.将UIImage写会到文件,使用NSData直接读取。

创建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] ;
    }
    //+号必须替换为%2B,要不然同样会失败!
    base64String = [base64String stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"] ;
    return base64String ;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,219评论 30 472
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,586评论 7 249
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,261评论 4 61
  • 和遗迹般的悬崖一样 山坡枯萎过 把这里当作柳梢的情人有很多 水不止 那朵为你命名的花不落 所有的天色峥嵘 山歌缭绕...
    2020号阅读 315评论 10 25
  • 导语 每次旅行都是一次扬帆起航的过程,就如在浩瀚无垠的大海上你感受到每一次风起及浪涌……蒙塔古道森是美国传奇海洋画...
    漫游家阅读 443评论 0 0