图片转base64位和web在线转64位的编码不一样

在image转base64时,得到的字符串和网页上在线转的不一样

- (NSString *)imageToString:(UIImage *)image {
     NSData *imageData = UIImageJPEGRepresentation(image,1.0f);
     NSString *image64 = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
     return [NSString stringWithFormat:@"data:image/jpeg;base64,%@",image64];
}

原因1: image在转data的时候,会对数据做加工

原因2:NSDataBase64Encoding64CharacterLineLength不对

  • NSDataBase64Encoding64CharacterLineLength:每64个字符插入\r或\n
  • NSDataBase64Encoding76CharacterLineLength:每76个字符插入\r或\n,标准中有要求是76个字符要换行,不过具体还是自己定
  • NSDataBase64EncodingEndLineWithCarriageReturn:插入字符为\r
  • NSDataBase64EncodingEndLineWithLineFeed:插入字符为\n
  • 选项为0,则代表不插入字符
所以为保持和web转码一致,代码应该改为 
- (NSString *)imageToString:(UIImage *)image {
    NSData *imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test.jpg" ofType:nil]];
    NSString *image64 = [imageData base64EncodedStringWithOptions:0];
    return [NSString stringWithFormat:@"data:image/jpeg;base64,%@",image64];
}

 

posted @ 2018-12-12 15:13  CindyLi  阅读(729)  评论(0)    收藏  举报